第三章 栈和队列
分类:
文章
•
2024-04-14 22:52:59
3.1栈
-
栈是限定仅在表尾进行插入和删除操作的线性表。允许插入删除的一段称为栈顶(top),另一端称为栈底(bottom),不含任何元素的栈陈给空栈。
3.1.1顺序栈
- 把数组下标为0的一段作为栈底,定义变量top来只是栈顶元素在顺序栈中的位置,top为整型。
- top的初始值为-1,指向栈底,而这个top=-1也可作为栈空的标志。
- 进栈时,top先+1,再把入栈的元素放到top指针指向的位置。删除栈顶元素时,先删除栈顶,再把top-1

3.1.2链栈
- 数据域——存储其本身的信息
- 指针域——存储一个指示其直接后继的信息,即直接后继的存储位置
3.2队列
- 队列是一种运算受限制的线性表,元素的添加操作在表的一端进行,删除操作在表的另一端进行。允许插入的一段称为队尾(rear),允许删除的一端称为队头(front)
3.2.1顺序队列
- 在非空队列中,头指针始终指向队列头元素的前一个位置,尾指针始终指向尾元素的位置
3.2.1.1.循环队列:
- 加入元素F,则队尾指示器加1操作修改为:
- rear = (rear+1)%queueArray.length
- 退出元素F,则队头指示器加1操作修改为:
- front = (front+1)%queueArray.length
- 另外,队中元素长度:
- (rear-front+queueArray.length)%queueArray.length
- 判断队列空/满:(允许队列最多只能存放ququeArray.length-1个元素)
- 满?(rear+1)%queueArray.length == front
- 空?rear==front
3.2.2链队列
- 空队列的判定条件是头指针和尾指针均指向头结点,即front=rear
- 入队操作,修改队尾指针:rear.next=p
- 出对操作,修改队头指针:front.next=front.next.next
