【笔记】数据结构-栈

  • 定义:栈是一种线性结构,可参考Stack提供给我们的方法
  • 特性:先进后出,不可访问索引,只能逐渐推入推出

接口

  interface IStackDS<T>
    {
        int Count { get; }  //得到栈中数据个数,属性
        int GetLength();  //同上,方法类型的
        bool IsEmpty();   //检验是否为空
        void Clear();  //清空
        void Push(T item);  //推入数据
        T Pop();  //获得栈顶数据并删去
        T Peek();  //仅获得栈顶数据
    }

顺序栈

最基本的栈,没啥特别的地方。

  • 关键点:

顺序栈栈顶元素为top-1,top为空元素

需要申请连续内存,为静态存储


变量

private T[] data;    //内存申请
private int top;    //默认top为-1

构造方法

public SeqStack(int size)  //基本构造方法
{
    data=new T[size];
    top=-1;
}

public SeqStack():this(10)  //无参时默认构造
{

}

链栈

  • 概念:默认情况,栈顶元素top指向下一个元素next,当使用链栈入栈时,top元素指向新入栈元素,新入栈元素指向下个元素next

变量

private T[] data;       //内存申请
private Node<T> top;    //栈顶元素结点
private int count = 0;  //栈中元素个数

入栈

public void Push(T item)
        {
            Node<T> newNode = new Node<T>(item);
            newNode.Next = top;
            top = newNode;
            count++;
        }

 出栈

 public T Pop()
        {
            T data = top.Data;
            top = top.Next;
            count--;
            return data;
        }

读取栈顶

 public T Peek()
        {
            return top.Data;
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值