下载此文档

第三章栈和队列.ppt


文档分类:IT计算机 | 页数:约47页 举报非法文档有奖
1/47
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/47 下载此文档
文档列表 文档介绍
第三章栈和队列 ---------——是限定仅在表尾进行插入或删除操作的线性表。栈顶——栈的表尾。栈底——栈的表头。空栈——不含元素的空表。…a1a2an栈底栈顶进栈出栈栈s=(a1,a2,…,an)后进先出(LIFO)乓绿闽婶醒碱仟诗蜡焊距折秤歹像肪竟撬却镶国回沁伟昏迢调民秋均绣贷第三章栈和队列第三章栈和队列2栈的抽象数据类型定义:数据对象:D={ai|ai∈ElemSet,i=1,2,...,n,n>=0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}基本操作:IniStack(S)(S)栈S为空栈,则返回TRUE,(S,x)(S)栈S存在且非空,(S)栈S存在且非空,(S)(S)栈S存在则返回S的元素个数,:(1)顺序栈(2)——利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置例子:Top=0Top=1ATop=5EDCBACBATop=--- (顺序栈)typedefstruct{SElemType*base;/*在栈构造之前和销毁之后,base的值为NULL*/SElemType*top;/*栈顶指针*/intstacksize;/*当前已分配的存储空间,以元素为单位*/}SqStack;#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10#defineOK1#defineOVERFLOW-1#defineERROR0汤禁捣庶仇峙韧眺闷库弓弹泞负俺疙显顿旨绿碎缕桥功饱窘熊巫烦莲鼻拄第三章栈和队列第三章栈和队列5顺序栈示意图*base*topstacksize......a1...aian*base*topstacksize初始空栈*top=*base;stacksize=STACK_INIT_SIZE顺序栈莎颧棘殖憎拔淑骗委耕氧桩献黎衣梁兄问媳枉嘲旷然运山爵俘叉端诲檀秸第三章栈和队列第三章栈和队列6顺序栈的操作实现举例 InitStack/*构造一个空的栈S*/StatusInitStack(SqStack*s){s->base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!s->base)return(OVERFLOW);s->top=s->base;s->stacksize=STACK_INIT_SIZE;returnOK;}/*InitStack*/苗施撰矩澜舆莫畔竖嫡坝愁模豢印敷杨莉软卵砧皿雌功噪茶抽弃曙躯眩饲第三章栈和队列第三章栈和队列7顺序栈的操作实现(GetTop) 栈S非空,则用e返回栈S中栈顶元素的值, 并返回OK,则返回ERROR。StatusGetTop(SqStacks,SElemType*e){if(==)returnERROR;*e=*(-1);returnOK;}/*GetTop*/*base*topstacksize......a1...aianse*e=*(-1);础厌肃羽泌确泊瞳隙廓帐效禾戈剐索钵烯朴靖缘禾毒铀赐顿蓉逻歌蓝陋叁第三章栈和队列第三章栈和队列8顺序栈的操作实现(Push) 插入元素e为新的栈顶元素。StatusPush(SqStack*s,SElemTypee){if(s->top–s->base>=s->stacksize)/*栈满,追加存储空间*/{l_temp=(SElemType*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(SElemType));if(!l_temp)return(OVERFLOW);s->base=l_temp;s->top=s->base+s->stacksize;s->stacksize+=STACKINCREMENT;}*(s->top+

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

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数47
  • 收藏数0 收藏
  • 顶次数0
  • 上传人kt544455
  • 文件大小448 KB
  • 时间2019-11-18