1 / 54
文档名称:

数据结构C语言版(栈和队列).ppt

格式:ppt   大小:200KB   页数:54
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构C语言版(栈和队列).ppt

上传人:mh900965 2017/2/18 文件大小:200 KB

下载得到文件列表

数据结构C语言版(栈和队列).ppt

相关文档

文档介绍

文档介绍:第第3 3章章栈和队列栈和队列本章主要介绍以下内容: ?栈的概念、存储结构及其基本操作?队列的概念、存储结构及其基本操作?栈与队列的应用举例退出 栈 队列 栈栈 栈的定义栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示: 进行插入和删除的一端是浮动端,通常被称为栈顶,并用一个“栈顶指针”指示;而另一端是固定端, 通常被称为栈底。我们经常将栈用下图 3-1 的形式描述: a1, a2, a3, ..., an 插入和删除端 a n... a 2 a 1 栈顶 top图 3-1 结论: 后进先出( Last In First Out ),简称为 LIFO 线性表。举例 1:家里吃饭的碗,通常在洗干净后一个一个地落在一起存放,在使用时,若一个一个地拿,一定最先拿走最上面的那只碗,而最后拿出最下面的那只碗。举例 2:在建筑工地上,使用的砖块从底往上一层一层地码放,在使用时,将从最上面一层一层地拿取。下面我们先给出栈结构的基本操作: (1)初始化栈 InitStack(S) (2)入栈 Push(S,item) (3)出栈 Pop(S,item) (4)获取栈顶元素内容 GetTop(S,item) (5)判断栈是否为空 StackEmpty(S) 栈的顺序存储栈的顺序存储结构是用一组连续的存储单元依次存放栈中的每个数据元素,并用起始端作为栈底。类型定义如下所示: #define MAX_STACK 10 // 栈的最大数据元素数目 typedef struct stack{ StackEntry item[MAX_STACK]; // 存放栈中数据元素的存储单元 int top; // 栈顶指针 }STACK; 基本操作算法: 1. 初始化栈 S void InItStack(STACK * S) { s->top=-1; } 2. 入栈 void Push(STACK * S,StackEntry item) { if (S->top==MAX_STACK-1) exit( “ Stack is full ”); else S->item[++S->top]=item; } 图 3-2 MAX _STACK-1 ... 1 0 top= -13. 出栈 void Pop(STACK * S,StackEntry * item) { if (StackEmpty( * S)) exit( “ Stack is empty ”); else * item=S->item[S->top--]; }4. 获取栈顶元素内容 void GetTop(STACK S,StackEntry * item) { if (StackEmpty(S)) exit( “ Stack is empty ”); else * item=[]; } 5. 判断栈 S是否为空 int StackEmpty(STACK S) { if (==-1) return TRUE; else FALSE; } 结论:由于栈的插入和删除操作具有它的特殊性, 所以用顺序存储结构表示的栈并不存在插入删除数据元素时需要移动的问题,但栈容量难以扩充的弱点仍就没有摆脱。