-
初始条件:栈S已经存在。
操作结果:若栈S不空,则以e返回栈顶元素。
Push(&S,e)
初始条件:栈S已经存在。
操作结果:在栈S的栈顶插入新的栈顶元素e。
Pop(&S,&e)
初始条件:栈S已经存在。
操作结果:删除S的栈顶元素,并以e返回其值。
StackTraverse(S,visit())
初始条件:栈S已经存在。
操作结果:从栈底到栈顶一次对S中的每个元素调用函数visit()。
}ADT stack
(2)设定链式队列的抽象数据类型为:
typedef struct Qnode{
QelemType data;
Struct Qnode *next;
}Qnode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr teat;
}
ADT Queue{
数据对象:D={a i|a i∈ElemSet,i=1,2,…,n,n>=0}
数据关系:R1={<a i-1,a i>/a i-1,a i∈D,i=2,…,n}
约定其中一端为队列头,一端为队列尾。
基本操作
InitQueue(&Q)
操作结果:构造一个空队列Q。
DestroyQueue(&Q)
初始条件:队列Q已经存在。
操作结果:队列Q被销毁,不再存在。
ClearQueue(&Q)
初始条件:队列Q已经存在。
操作结果:将Q清空为空队列。
QueueLength(Q)
初始条件:队列Q已经存在。
操作结果:返回Q的元素个数,即队列的长度。
总结