网站大量收购闲置独家精品文档,联系QQ:2885784924

5--栈队列串数组.pptx

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5--栈队列串数组

软件技术基础线性结构——栈、队列栈结构2、堆栈 stack栈是特殊的线性表,仅在表的一端进行插入或删除操作是抽屉一类物理实体的逻辑抽象类似仓库、抽屉的结构出栈入栈an栈顶...a2栈底a1特点:(1)对栈内数据的操作总在栈顶进行 (2)数据进栈称为“压入”push (3)数据出栈称为“弹出”pop (4)遵循“后进先出”的原则LIFO用数组实现栈——顺序栈(一)2.1用数组实现栈(1)定义若定义a[0]为栈底,top为栈顶(2`)压入 push——将新元素放在栈顶当新元素入栈时,栈顶上移,新元素放在栈顶。a[MAX-1]new_one......typedef struct stack_type{ elemtype data[MAXNUM]; int top; //栈顶元素所在位置}stack_type;360栈顶...a2253栈顶元素所在位置a1150元素个数为top+1stack.top = stack.top + 1;stack.data[stack.top] = new_one;顺序栈(一)(3`)弹出 pop——从栈顶移出一个数据栈顶元素拷贝出来栈顶下移拷贝出来的栈顶作为函数返回值a[MAX-1]out栈顶36046...elemptype pop(stack_type *stack){ elemtype out; if(stack-top = 0) error(3); else{ out = stack-data[stack-top]; stack-top = stack-top -1; } return out;}a2253a1150顺序栈(一)(4`)栈空判断(5`)置栈空(6`)栈满判断if( stack.top = = 0 ? )stack.topa1if( stack.top 0 )栈顶元素所在位置stack.top = -1;top的数理含义非常别扭if( stack.top = MAXNUM – 1 )顺序栈(常用定义)若定义top为栈顶之上新空间位置(2)压入(3)弹出(4)栈空判断条件(5)置栈空 (6)栈满判断条件a[max-1]元素个数为top...a[top]stack.data[stack.top] = new_one;a[top]new_onestack.top = stack.top + 1;栈顶...a2a[1]stack.top = stack.top - 1;a1a[0]out = stack.data[stack.top];有更好的逻辑解读stack.top == 0stack.top == MAX_NUMstack.top = 0;proc B( ){ ...... call C( ) ......}proc C( ){ ...... ...... ......}proc A( ){ ...... call B( ); ...... call C( );}顺序栈(6)栈的应用程序的调用,中断的嵌套A和B都会调用C,单从函数C的角度,当C执行完后,应该返回A还是B呢?proc B( ){ ...... call C( ) ......}proc C( ){ ...... ...... ......}proc A( ){ ...... call B( ); ...... call C( );}顺序栈(6)栈的应用程序的嵌套,中断的嵌套程序C程序C程序B程序A程序B程序C程序A利用用户栈实现了程序调用后回到调用处proc A( ){ int a,b; ...... call B( ); …… call C( );}用数组实现栈程序的嵌套与局部变量程序的指令位置和局部变量都存放在用户栈当C()被调用时c函数的局部变量会覆盖B的局部变量proc B( ){ int x,y; ...... ......}proc C( ){ int o,p; ...... ......}程序C o、p程序B x、y程序A a、bana1a2……用链表实现栈2.2用链表实现栈(1)定义入栈出栈headtop栈顶在表头typedef struct lstack_type{ node_type * top; int length;}lstack_type;链栈(2)压入push(3)弹出popvoid push(stack, new_node){ new_node-next = stack-top; stack-top = new_node; stack-length ++;}……a1stack-topnode_type * pop(stack){ node_type* out; out = stack-top; stack-top = stack-top-nex

文档评论(0)

整理王 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档