动态集合上的操作:
Search(S,k):一个查询操作,给定一个集合S和关键字k,返回指向S中某个元素的指针x,使得x.key=k;如果S中没有这样的元素,则返回NIL。
Insert(S,x):一个修改操作,将由x指向的元素加入到集合S中。
Delete(S,x):一个修改操作,给定指针x指向集合S中的一个元素,从S中删除x。
Minimum(S):查询S中最小元素。
Maximum(S):查询S中最大元素。
Successor(S,x):一个查询操作,给定关键字属于全序集S的一个元素x,返回S中比x大的下一个元素的指针,如果x为最大元素,则返回NIL。
Predecessor(S,x):一个查询操作,给定关键字属于全序集S的一个元素x,返回S中比x小的前一个元素的指针,如果x为最小元素,则返回NIL。
一、栈和队列
栈和队列都是动态集合,且在其上进行Delete操作所移除的元素是预先设定的。
在栈(stack)中,被删除的元素是最近插入的元素:栈实现的是一种后进先出(LIFO)策略。
类似的,在队列(queue)中,被删除的总是在集合中存在时间最长的那个元素:队列实现的是一种先进先出(FIFO)策略。
栈:
栈上的Insert操作被称为压入(Push)