1.栈和队列是限定插入和删除只能在表的端点进行的线性表。栈是后进先出的数据结构,队列是先进先出的数据结构(栈相当于一个瓶子,向瓶内放的物品被压到瓶子底部,只有等上面的所有物品都出来了,下面的才能出来,这是先进后出;队列相当于一个隧道,火车向隧道内开不能回头,车头先进去也先出来,这是先进先出)。
2.栈的类型定义:
ADT Stack
{
数据对象:D = {ai | ai ∈ ElemSet,i = 1, 2, ..., n, n >= 0}
数据关系:R1 = {<ai-1, ai ∈ D,i=2, ..., n>}(约定an端为栈顶,a1端为栈底)
基本操作:
①InitStack(&S)——初始化栈
②Destroy(&S)——销毁栈
③StackLength(S)——求栈中元素个数
④StackEmpty(S)——判断栈是否为空
⑤GetTop(S, &e)——返回栈底元素
⑥ClearStack(&S)——清空栈
⑦Push(&S, e)——进栈
⑧Pop(&S, &e)——出栈
⑨StackTravers(S, visit())——对栈进行遍历
} ADT Stack
3.栈的应用举例:
(1)数制转换:
(2)括号匹配检验:
(3)行编辑程序问题:
(4)表达式求值:
(5)实现递归操作:
4.
5.
6.
7.
8.
9.
10.