看完这几种方法让你轻松了解栈

栈的基本概念:

定义

只允许在一端进行插入或删除操作的线性表。首先,栈是一种线性表,但限定这种线性表只能在某一段进行插入和删除操作。

栈顶(Top):线性表允许进行插入和删除的一端。

栈底(Bottom):固定的,不允许进行插入和删除的另一端。

空栈:不含任何元素。

栈的特点:

栈——先进后出、后进先出

入栈的概念:

入栈就是将一个新的元素放到栈顶,出栈就是从栈顶取出一个元素。

[ 入栈需要注意 栈是否为空 栈是否为满 ]

 出栈的概念:

出栈指一种计算机术语,与其相对应的是进栈;进栈、出栈多是按照一定顺序的

出栈 需要注意 栈是否 不存在 ,和 栈是否 已空

 栈的链式存储:

链表的头结点端做栈顶还是栈底?

答:栈顶 因为 链表 的头结点端 可以 更方便的进行元素 的 插入(头插法)和 删除(头结点做前驱)

  • 栈链式存 结构体

    //结点结构体
    typedef struct Node{
        int date;
        struct Node *next;
    }Node;
    ​
    //栈的结构体
    typedef struct Stack{
        
        struct Node header;
        int size;                   //栈的大小 即元素个数
        
    }Stack,*LinkStack;

栈的顺序存储结构:

顺序栈的实现

采用顺序存储的栈称为顺序栈,它是利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时附设一个指针(top)指示当前栈顶的位置。

栈的顺序存储类型可以用以下表示:

#define MAXSIZE 100         //栈中元素的最大个数
typedef struct {
    ElemType data[MAXSIZE]; //存放栈中元素
    int top;                //栈顶指针
} SqStack;

栈顶指针:S.top,初始时设置S.top = -1;栈顶元素:S.data[S.top];

进栈操作:栈不满时,栈指针加1,再送值到栈顶元素

出栈操作:栈非空时,先去栈顶元素值,再将栈顶指针减1

栈空条件:S.top == -1

栈满条件:S.top == MAXSIZE - 1

栈长:S.top + 1

栈的应用

  • 前 中 后 缀表达式如何计算?

    首先运算优先级最高的,然后 将 运算符 放两个整体 之前 就是前缀 ,放两个整体之后,就是后缀!
    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值