栈和队列指针状态

栈和队列指针状态(按严蔚敏版数据结构的要求)

只写了主要易考的(其实是为了方便我,哈哈),写的很随意可能有些没写对的地方请大家指正

一、栈

1、顺序栈(Top始终在元素的下一位置)

栈空:Top==0
入栈:S[Top++]=x
出栈:x=S[- -Top]
栈满:Top == MAXSIZE

2、共享栈

栈空:top1==-1&&top2==MAXSIZE
1号入栈:s[top1++]=x
2号入栈:s[top2- -]=x
1号出栈:x=s[- -top1]
2号出栈:s[++top2]=x
栈满:top2-top1 == 1

二、队列

1、链式队列

空队:头尾指针都指向一个空节点
入队:front指针充当头结点(无数据),rear指针向后移加入数据
出队:front指向下一个节点,意思原本的就脱离链表相当于删除了

2、顺序队列

<与栈的顺序表示一致,位置相当于front在栈底(出队),rear在栈顶(入队)>
空队:front=rear=0
入队:rear++
出队:front++
当front+1=rear&&rear==MAXSIZE-1时,即队头的下一位是队尾而且队尾已达到最大,有可能会出现假溢出(实际上front之前的位置没有数据),因此就有了循环队列,就是把数组变成一个圈(假设出的),让数组的首尾相连。

2、循环队列(牺牲一个空间来辨别队满)

空队:front=rear=0
入队:(rear+1)%M
出队:(front+1)%M
满队:rear= =front
求队中元素个数:(rear-front+M)%M
(M为能存入的最大元素个数)

千万别忘了求余哦,循环队列的精髓
我写的太水了,先这样吧,以后再来补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值