Lecture 3-1

这篇博客介绍了栈(Stack ADT)的概念和线性数据结构的两种实现方式:链表和数组。针对链表,讲解了单链表实现的链栈操作,包括empty(), push(), pop()和top()。对于数组实现的栈,讨论了构造函数、析构函数、数组容量和平均时间复杂度。还探讨了栈在逆波兰表达式计算、括号匹配和函数调用等应用场景中的作用。" 137159862,1142232,好的产品:满足需求、具备黏性与优秀体验,"['产品经理', '产品设计', '用户体验', '用户需求', '产品黏性']
摘要由CSDN通过智能技术生成

绪论

大致地看了一下,这一章主要介绍的是栈的概念及其运用。除了一些最为人熟知的如递归栈,波兰逆波兰表达式,还有一些比较特殊的课本上没有的应用。


Stack ADT

在这里插入图片描述
linear(线性的),说明栈依旧是一个线性的数据结构。栈的基本操作比较少,就是进栈,出栈,创建(销毁)和判空(判满这个操作是有点争议的,因为链栈是不会出现爆栈的情况)。

栈有链表和数组的两种实现方式:

在这里插入图片描述

Singly linked lists

前面的单链表的模板类:

在这里插入图片描述

基于单链表的链栈的模板类:

在这里插入图片描述

事实上所有的操作都是lecture 2单链表的copy。

empty()

判断链表是否为空:

在这里插入图片描述

push()

链栈中,链表元素的相对次序和栈中元素的相对次序相反。也就是说栈顶结点是链表的第一个结点(这样定义更方便进行进栈操作)。
在这里插入图片描述

单链表:

在这里插入图片描述

pop(),top()

同理pop和top就是链表的pop_front和front。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值