Coursera北大《数据结构基础》之栈与队列

本文基于Coursera北大课程《数据结构基础》,所有文中非标注图片均来自课件,侵删

 

根据下图,通过访问形式划分的线性结构中,栈和队列属于顺序访问;按操作方式分,线性结构又可以划分为线性表、栈(LIFO)和队列(FIFO)三种形式,线性表在Coursera北大《数据结构基础》之线性表中已经学习过,这里进行栈和队列的学习。

 

目录

1. 栈(stack)

1.1 栈的实现方式

1.1.1 顺序栈(Array-based stack)

1.1.2 链式栈(linked stack)

1.1.3 顺序栈和链式栈的效率比较

2. 栈的应用

2.1 表达式求值

2.1.1 表达式的递归定义

2.1.2 中缀表达式求值

2.2 递归调用原理与递归转非递归

2.3. 函数调用

3. 队列(Queue)

3.1 队列的实现方式

3.1.1 顺序队列

3.1.2 链式队列

4. 队列的应用

参考文献


1. 栈(stack)

栈是一种后进先出(LIFO)限制访问端口的线性结构。栈的运算只在表的一端进行,主要操作包括进栈(push)和出栈(pop)。

P.S. 堆(heap)用于不符合LIFO的动态存储分配,如指针所指向空间的分配。

1.1 栈的实现方式

1.1.1 顺序栈(Array-based stack)

顺序栈使用向量表现,实质是简化的顺序表。使用顺序栈的关键是确定哪一端作为栈顶。如下图所示,顺序栈的栈顶是随着数据的进栈(也叫做压入栈顶)而改变的。

使用顺序栈时,要特别注意上溢和下溢问题:

  1. 上溢即overflow,是当栈中已经有maxsize个元素时,如果再做进栈运算,就会溢出;
  2. 下溢是underflow,即对空栈做出栈运算时会产生的现象。

1.1.2 链式栈(linked stack)

链式栈往往采用单链形式存储,指针从栈顶向下链接,如下图所示。

1.1.3 顺序栈和链式栈的效率比较

在时间效率上,顺序栈和链式栈的所有操作都只需要常数时间完成࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值