一、栈的基本概念
1、栈的定义
栈(Stack)是只允许在一端进行插入或删除的线性表。
- 栈顶(Top): 线性表允许进行插入删除的那一端。
- 栈底(Bottom): 固定的,不允许进行插入和删除的另一端。
- 空栈: 不含任何元素的空表。
栈又称为后进先出(Last In First Out)的线性表,简称 LIFO 结构
2、栈的常见基本操作
- InitStack(&S): 初始化一个空栈S。
- StackEmpty(S): 判断一个栈是否为空,若栈为空则返回true,否则返回false。
- Push(&S, x): 进栈(栈的插入操作),若栈S未满,则将x加入使之成为新栈顶。
- Pop(&S, &x): 出栈(栈的删除操作),若栈S非空,则弹出栈顶元素,并用x返回。
- GetTop(S, &x): 读栈顶元素,若栈S非空,则用x返回栈顶元素。
- DestroyStack(&S): 栈销毁,并释放S占用的存储空间(“&”表示引用调用)。
二、队列的基本概念
1、队列的定义
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
- 队头(Front): 允许删除的一端,又称队首。
- 队尾(Rear): 允许插入的一端。
- 空队列: 不包含任何元素的空表。
队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。
2、队列的常见基本操作
- InitQueue(&Q): 初始化队列,构造一个空队列Q。
- QueueEmpty(Q): 判队列空,若队列Q为空返回true,否则返回false。
- EnQueue(&Q, x): 入队,若队列Q未满,将x加入,使之成为新的队尾。
- DeQueue(&Q, &x): 出队,若队列Q非空,删除队头元素,并用x返回。
- GetHead(Q, &x): 读队头元素,若队列Q非空,则将队头元素赋值给x。