下载此文档

第4章 栈与队列.ppt


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

队列
退出
目录
前言
栈和队列是两种重要的线性结构,它们也是线性表,特殊性体现在:它们是操作受限的线性表。

栈的定义
栈(stack)是一种操作受限的线性表,即表中元素的插入和删除只能在表的一端进行,通常称允许插入和删除的一端为栈顶(Top),另一端为栈底(Bottom)。
假设栈 s=(a1,a2,…,an),栈中的数据元素以a1,a2,…an的顺序入栈,而出栈的次序则是an,an-1,,…,a1,如图所示。
栈顶的位置随元素的插入或删除而变化,需要一个称为栈顶指示器的来指示栈顶的当前位置。一般将栈的插入操作称为进栈(入栈),删除操作为退栈(出栈)。
根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。
也就是说,栈是一种后进先出(Last In First Out)的线性表,简称为LIFO表(或称FILO)。
类似日常生活中的一叠盘子

:INISTACK(&S)
将栈S置为一个空栈(不含任何元素)。
:PUSH(&S,X)
将元素X插入到栈S中,也称为“入栈”、“插入”、“压入”。
: POP(&S)
删除栈S中的栈顶元素,也称为”退栈”、“删除”、“弹出”。
: GETTOP(S)
取栈S中栈顶元素。
: EMPTY(S)
判断栈S是否为空,若为空,返回值为1,否则返回值为0。
栈的抽象数据类型描述
ADT Stack {
Data:
含有n个元素a1,a2,a4,…,an,按LIFO规则存放,每个元素的类型都为elemtype。
Operation:
Void inistack(&s) //将栈S置为一个空栈(不含任何元素)
Void Push(&s,x) //将元素X插入到栈S中,也称为“入栈”、“插入”、“压入”
Void Pop(&s) //删除栈S中的栈顶元素,也称为”退栈”、“删除”、“弹出”
Elemtype gettop(s) //取栈S中栈顶元素
Int empty(s) //判断栈S是否为空,若为空,返回值为1,否则返回值为0
}ADT stack
栈的顺序存储结构——顺序栈
1、顺序栈的定义如下:
#define maxnum 100 //定义栈的最大容量
typedef struct
{ elemtype stack[maxnum];
int top; //指示栈顶位置
}seqstack;
seqstack *s;
用一维数组来依次存放自栈底到栈顶的数据元素,同时
利用指针top来指示栈顶在数组中的当前位置。
#define maxlen MAXSIZE
typedef struct
{ elemtype vec[maxlen];
int len; //顺序表的长度
}sequenlist;

(1)初始化栈
由于数组的下标从0开始,故初始化时将栈顶指针放在下标为0之前,即-1处。
void inistack(seqstack *s)
{
s->top=-1; //设置栈顶指针top,表示栈空
}

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

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