数据结构讲义第3章.ppt

数据结构讲义第3章.ppt

ID:52124542

大小:365.84 KB

页数:30页

时间:2020-04-01

数据结构讲义第3章.ppt_第1页
数据结构讲义第3章.ppt_第2页
数据结构讲义第3章.ppt_第3页
数据结构讲义第3章.ppt_第4页
数据结构讲义第3章.ppt_第5页
资源描述:

《数据结构讲义第3章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第三章栈和队列栈和队列是两种重要的数据结构。从结构特性角度看,栈和对列也是线性表,其特殊性在于它们的基本操作是线性表的子集,是操作受限的线性表,可称为限定性的数据结构。从数据类型角度看,其操作规则与线性表大不相同,是完全不同于线性表的抽象数据类型。第一节栈一、栈的定义栈是限定在表的一端进行插入和删除操作的线性表。插入:称为进栈(或压栈)。删除:称为出栈(或退栈)。栈顶(top):允许进行插入和删除操作的一端。栈底(bottom):不允许插入和删除操作的一端。基本操作:Initstack(&s):栈初始化Destroystack

2、(&s):撤消栈Clearstack(&s):置栈空Stackempty(s):判栈空Stacklength(S):求栈中元素个数Gettop(S,&e):取栈顶元素Push(&S,e):入栈Pop(&S,&e):出栈特点:后进先出----LIFOLastInFirstOut栈底…ana2a1栈顶栈的表示与实现三、栈的顺序存储结构----顺序栈利用一组地址连续的存储单元依次存放从栈底到栈顶的数据元素。顺序栈存储结构定义:#defineSTACK_INIT_SIZE100//存储空间初始分配量;#defineSTACKINCRE

3、MENT10//存储空间分配增量typedefstruct{SElemType*base;SElemType*top;intstacksize;}SqStack;Base指向存储空间开始地址,top指示栈顶当前位置。若栈空间未分配,则base为NULL;top==base:栈空top-base==stachsize:栈满元素进栈:在top位置插入元素,top增1元素出栈:top减1。top指针始终指向栈顶元素的下一个位置。顺序栈操作的实现1、栈初始化:分配初始存储空间,初始化各变量。StatusInitstack(Sqstac

4、k&s){s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!b.base)exit(OVERFLOW);s.top=s.base;s.stacksize=STACK_INIT_SIZE;returnOk;}顺序栈操作的实现2、撤消栈:释放栈空间。statusDestroystack(SqStack&s){if(s.base){free(s.base);s.base=NULL;returnOK;}returnERROR;}3、置栈空:将栈设置成空栈。

5、statusClearstack(SqStack&s){if(s.base){s.top=s.base;returnOK;}returnERROR;}4、取栈顶元素:返回栈顶元素的值。statusGetTop(SqStack&s,SElemType&e){if(s.top==s.base)returnERROR;e=*(s.top-1);returnOK}顺序栈操作的实现5、入栈操作:把元素压入栈中。statusPush(SqStack&s,SElemTypee){if(s.top-s.base>=s.stacksize){s

6、.base=(SElemType*)ralloc(s.base,(s.tacksize+STACKINCREMENT)*sizeof(SElemType));if(!b.base)exit(OVERFLOW);s.top=s.base+s.stacksize;s.stacksize+=STACKINCREMENT;}*s.top=e;s.top++;returnOK;}压栈操作topBAbasetopeBAbasee顺序栈操作的实现6、出栈操作:删除栈顶元素。StatusPop(Sqstack&s,Selemtype&e){i

7、f(s.top==s.base)returnERROR;e=*(--s.top)returnOk}出栈操作topYBAbasetopBAbaseY链式栈的实现用线性链表表示栈的存储结构,称为链栈。链表头指针始终指向栈顶,同样用top表示。无必要加头结点,栈空时:top=NULL入栈:每当一个元素进栈时,申请一个新结点,插入到表头。出栈:每当一个元素出栈时,从表头释放一个结点。链栈结点结构描述如下typedefstructstacknode{ElemTypedata;structstacknode*next;}StackNode

8、;typedefstruct{StackNode*top;}LinkStack;DatanextS.top栈顶栈底第二节栈的应用一、数制转换将一个非负的十进制整数N转换为另一个等价的B进制数。方法:不断用N及其商去除以B求余数直到商为0为止,所得余数的反序排列就是N的B进制表

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。