【数据结构】栈(Stack)

目录

一、栈的概念

栈Stack:

栈顶 Top:

栈底 Bottom:

空栈:

压栈 Push:

出栈 Pop:

图例说明:

 二、栈的实现:

三、改写顺序表实现:

1、创建栈

 2、初始化栈:

​编辑 3、压栈:

4、出栈:

 5、判空:

 6、销毁:

7、数据个数:

8、取出栈顶数据:

9、测试:

 四、分装代码:

Stack.h文件:

Stack.c文件:

test.c文件:

五、力扣题:有效括号


一、栈的概念

栈Stack:

        是只允许在一端进行插入或删除性表线。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作(类似于一个只有开口的瓶子)。(遵循LIFO原则)——后进先出(Last In First Out)

栈顶 Top:

         进行插入或者删除的那一端

栈底 Bottom:

        栈顶另一端

空栈:

        不含任何元素的空表

压栈 Push:

        栈的插入操作(还可以叫入栈,进栈)

出栈 Pop:

        栈的删除操作

图例说明:

如图,将数据一个一个压进去,相当瓶子,你倒水进去,就是先流入底部,一直到填满

你喝水,先喝的是上面的水,最后才喝底部的水,所以就是  先进后出

 你想想弹夹,装子弹是不是也是先放的子弹,最后才打出来

 既然如此:像子弹一样,想用下一个就会Pop(出栈)掉这颗子弹


 二、栈的实现:

涉及以下:

1、栈的初始化

2、压栈

3、出栈

4、判断是否为空

5、销毁

6、数据个数(可以写可以不写,我觉得写一下也行,能够知道压栈数据有几个)

7、取栈顶数据

以下三个数据结构都可以来创建栈

相比于双链表和单链表,更会倾向于单链表,因为栈是只有栈顶进行删除和增加,而双链表单链表每一个节点多一个指针

对于单链表:使用头插尾删尾插头删)来实现压栈和出栈

但是更倾向于选择顺序表,因为它的缺点虽然是扩容,但是也不是每次都要扩容,而且cpu的缓存利用率也高

三、改写顺序表实现:

1、创建栈

如下:和顺序表相同,但是,第二个参数由size(有效数据个数改成了栈顶top)

 2、初始化栈:

有个讲究了,对于top有2种取值,Top栈顶用来获取元素

若是栈顶是从0开始的话,那么,你放入第一个数据,此时Top=1,但是你的数据位于的下

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值