下载此文档

第3章:栈和队列.ppt


文档分类:IT计算机 | 页数:约22页 举报非法文档有奖
1/22
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/22 下载此文档
文档列表 文档介绍
第3章:栈和队列

队列


栈是一种只能在一端进行插入或删除操作的线性表。
表中允许进行插入、删除操作的一端称为栈顶。
表的另一端称为栈底。
栈顶的当前位置是动态的,栈顶的当前位置由一个称为栈顶指针的位置指示器指示。
当栈中没有数据元素时,称为空栈。
栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。
、b、c、d进栈,给出它们所有可能的出栈次序。
答:所有可能的出栈次序如下:
abcd abdc acbd acdb adcb bacd badc bcad
bcda bdca cbad cbda cdba dcba
,B,C,D,则借助一个栈所得到的输出序列不可能是( )。
(A) A,B,C,D (B) D,C,B,A (C) A,C,D,B (D) D,A,B,C
答:可以简单地推算,得容易得出D,A,B,C是不可能的,因为D先出来,说明A,B,C,D均在栈中,按照入栈顺序,在栈中顺序应为D,C,B,A,出栈的顺序只能是D,C,B,A。所以本题答案为D。
,2,3,…,n,其输出序列是p1,p2,…,pn,若p1=n,则pi的值( )。
(A) i (B) n-i (C) n-i+1 (D) 不确定
答:当p1=n时,输出序列必是n,n-1,…,3,2,1,则有:
p2=n-1,
p3=n-2,
…,
pn=1
推断出pi=n-i+1,所以本题答案为C。
,2,3,…,n,其输出序列是p1,p2,…,pn,若p1=3,则p2的值( )。
(A) 一定是2 (B) 一定是1 (C) 不可能是1 (D) 以上都不对
答:当p1=3时,说明1,2,3先进栈,立即出栈3,然后可能出栈,即为2,也可能4或后面的元素进栈,再出栈。因此,p2可能是2,也可能是4,…,n,但一定不能是1。所以本题答案为C。
栈的几种基本运算如下:
(1)初始化栈InitStack(&s):构造一个空栈s。
(2)销毁栈ClearStack(&s):释放栈s占用的存储空间。
(3)求栈的长度StackLength(s):返回栈s中的元素个数。
(4)判断栈是否为空StackEmpty(s):若栈s为空,则返回真;否则返回假。
(5)进栈Push(&S,e):将元素e插入到栈s中作为栈顶元素。
(6)出栈Pop(&s,&e):从栈s中退出栈顶元素,并将其值赋给e。
(7)取栈顶元素GetTop(s,&e):返回当前的栈顶元素,并将其值赋给e。
(8)显示栈中元素DispStack(s):从栈顶到栈底顺序显示栈中所有元素。

假设栈的元素个数最大不超过正整数MaxSize,所有的元素都具有同一数据类型ElemType,则可用下列方式来定义栈类型SqStack:
typedef struct
{ ElemType data[MaxSize];
int top; /*栈指针*/
} SqStack;
顺序栈进栈和出栈示意图

采用链式存储的栈称为链栈,这里采用单链表实现。
链栈的优点是不存在栈满上溢的情况。
我们规定栈的所有操作都是在单链表的表头进行的,下图是头结点为*lhead的链栈。
链栈中数据结点的类型LiStack定义如下:
typedef struct linknode
{ ElemType data; /*数据域*/
struct linknode *next; /*指针域*/
} LiStack;
链栈示意图
队列
队列的定义
队列简称队,它也是一种运算受限的线性表,其限制仅允许在表的一端进行插入,而在表的另一端进行删除。
我们把进行插入的一端称做队尾(rear),进行删除的一端称做队首(front)。
向队列中插入新元素称为进队或入队,新元素进队后就成为新的队尾元素;从队列中删除元素称为出队或离队,元素出队后,其后继元素就成为队首元素。
队列的入队和出队操作示意图

第3章:栈和队列 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数22
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ranfand
  • 文件大小123 KB
  • 时间2017-07-23