数据结构C语言版第二版(名师严蔚敏最新力作)人民邮电出版社

 2022.3.8 星期三 课堂笔记

第三章 栈和队列

参考教材:数据结构(C语言版)/严蔚敏,李冬梅,吴伟民编

3.1栈和队列的定义和特点

3.1.1 栈的定义和特点

1、定义仅允许在表尾(栈顶)端进行插入或删除的线性表。

栈顶 top 栈底 base

2、特点LIFO(FILO)

3、图示

3.1.2 队列的定义和特点

1、定义只允许在标的一端进行插入,而在另一端删除元素

队尾 rear 对头 front

2、特点:FIFO

3、图示

3.3 栈的表示和操作的实现

3.3.1 栈的类型定义

3.3.2 顺序栈的表示和实现

1、栈空的语句表示 S.top==S.base

2、(1)base始终指向栈底处 

      (2)top始终指向栈顶元素的上一个位置

3、图示

 2022年3月27日 星期一 课堂笔记

3.3.2 顺序栈的表示和实现

1、初始化

InitStack

S.base=new SElemType[MAXSIZE];

S.top=S.base;

S.stacksize=MAXSIZE;

2、入栈(push)

S.top-S.base==MAXSIZE;    //判断栈满

*S.top++=e;

3、出栈

S.top==S.base 

e=*--S.top;

4、取栈顶元素

S.top!=S.base

return *(S.top-1);

课堂练习

如果一个栈的输入序列为123456,能否得到435612和135426的出栈序列?

435612 不可以  135426可以

3.3.3 链栈的表示和实现

1、初始化

 S=NULL;

return OK;

2、入栈

p=new StackNode;  //生成新结点

p\rightarrow data=e;        //将新结点数据域置为e

p\rightarrow next=s;         //将新结点插入栈顶

s=p;                        //修改栈顶指针为p

3、出栈

e=S—>data;         //将栈顶元素赋给e

p=S;                       //用p临时保存栈顶元素空间,以备释放

S=S—>next;          //修改栈顶指针

delete p;                 //释放原栈顶元素的空间

4、取栈顶元素

return S—>data;               //返回栈顶元素的值

2022.3.22   星期二 课堂笔记

3.4 栈与递归

3.4.1 采用递归算法解决的问题

1)定义:自己调用自己

2)设置条件:终止条件和递归步骤

3)掌握两个实例 (fact,fib) 

3.5 队列的表示和操作的实现

2.队列

1)队列定义:Queue,Q;特点:FIFO

两个重要的指针:front  始终指向队头元素处

                             rear  始终指向队尾元素的下一个位置

2)队列和栈的区别:两指针指向栈底元素处

栈: base 始终指向栈底元素处

        top始终指向栈底元素处

3)判断队列空的语句

        Q.rear==Q.front

 4)假溢出与真溢出的区别:(出简答题)

假溢出:队列中实际的存储空间,没有占满,但无法进队的情况。

真溢出:队列中实际的存储空间,已经占满,无法进队的情况

5)如何解决假溢出?

利用循环来解决,方法:求模(依环状增1)

6)判断队空和队满

队空:Q.front==Q.rear

队满:(Q.rear+1)%MAXQSIZE==Q.front

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aging88

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值