《算法导论》第十章——基本数据结构(一):栈与队列
引言:算法操作的集合可以随着时间的改变而增大,减小,或者产生其他变化,我们称这种集合是动态的。接下来的五章,我们将研究计算机上表示和操作有穷动态集合的一些基本技术。本文主要为你讲解栈与队列的操作和实现,建议将这些操作制作成库,方便以后的引用,避免重复编码。系列文章为算法导论的笔记和相关习题解答。
本文来源:栈与队列
动态集合的元素
元素包括两个部分:关键字+卫星数据
动态集合上的操作
主要包括两个大的方面:查询
我们约定:集合为S,关键字为k,指向元素的指针为x
Search(S,k)
Inserrt(S,x)
Delete(S,x)
Minimum(S)
Maximum( S )
Successor (S,x)
Predecessor(S,x)
栈和队列
实现了一种先进先出的策略。通常情况下我们采用数组加栈顶指示top来实现,约定top==0(或者-1)的时候表示栈为空;同时如果stack的长度是m,那么要考虑元素个数超过m以后产生的溢出问题。栈的一些定义和基本操作如下:
队列的一些定义的基本的操作如下:
7,解答:两个队列,参考下图