《数据结构(C语言描述)(第2版)》教学课件3-03链栈及其操作_第1页
《数据结构(C语言描述)(第2版)》教学课件3-03链栈及其操作_第2页
《数据结构(C语言描述)(第2版)》教学课件3-03链栈及其操作_第3页
《数据结构(C语言描述)(第2版)》教学课件3-03链栈及其操作_第4页
《数据结构(C语言描述)(第2版)》教学课件3-03链栈及其操作_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2016数据结构Data structure讲授:司蕾3.3链栈及其操作常州信息职业技术学院02三、链表的插入03链栈-描述3.3 若栈中元素的数目变化范围较大或不清楚栈元素的数目,就应该考虑使用链式存储结构来表示栈。 1、链栈(Linked Stack) 栈的链式存储结构称为链栈,它是运算受限的单链表,其插入和删除操作仅限制在表头位置上进行,栈顶指针就是链表的头指针top a4 a3 a1 a2图3-2 链栈示意图04链栈-描述3.3top向栈中顺序插入(入栈) A、B、C、D04链栈-描述3.3top向栈中顺序插入(入栈) A、B、C、DA04链栈-描述3.3topB向栈中顺序插入(入栈)

2、 A、B、C、DA04链栈-描述3.3topB向栈中顺序插入(入栈) A、B、C、DAC04链栈-描述3.3topB向栈中顺序插入(入栈) A、B、C、DACD04链栈-描述3.3topB向栈中顺序插入(入栈) A、B、C、DACD从栈中顺序删除(退栈) D、C、B、A04链栈-描述3.3topB向栈中顺序插入(入栈) A、B、C、DAC从栈中顺序删除(退栈) D、C、B、A04链栈-描述3.3topB向栈中顺序插入(入栈) A、B、C、DA从栈中顺序删除(退栈) D、C、B、A04链栈-描述3.3top向栈中顺序插入(入栈) A、B、C、DA从栈中顺序删除(退栈) D、C、B、A04链栈-描

3、述3.3top向栈中顺序插入(入栈) A、B、C、D从栈中顺序删除(退栈) D、C、B、A04链栈-描述3.3向栈中顺序插入(入栈) A、B、C、D从栈中顺序删除(退栈) D、C、B、A插入、删除只在链表的一端进行topBACD03链栈-描述3.32、链栈的描述typedef struct/栈的描述 StackNode *top; /栈顶指针LinkStack; typedef char DataType;/假定栈元素的类型为字符类型typedef struct stacknode/结点的描述 DataType data; struct stacknode *next;StackNode;06

4、链栈-描述3.33、说明:(1)设S是LinkStack类型的指针变量,则S是指向链栈的指针,链栈栈顶指针可表示为S- top;链栈栈顶元素可表示为S- top -data。(2)设p是StackNode类型的指针变量,则p是指向链栈某结点的指针,该结点的数据域可表示为p -data,该结点的指针域可表示为p - next。(3)条件S-top= NULL表示空栈,链栈没有栈满的情况。三、链表的插入07链栈的操作-进栈3.31、进栈2、算法思路: 生成一个新结点,将x写入数据域,再将新结点插入栈的顶部。StackNode *p=(StackNode *)malloc(sizeof(StackN

5、ode);p-data=x;p-next=S-top;S-top=p; topBAxptop083、具体算法:int Push(LinkStack *S,DataType x)/进栈StackNode *p=(StackNode *)malloc(sizeof(StackNode);if(p=NULL) puts (内存申请不成功!);return 0; p-data=x;p-next=S-top;/将新结点*p插入链栈头部S-top=p; /栈顶指针指向新结点return 1;将栈S和进栈元素x作为参数。将值为x的结点插入栈顶,进栈操作成功时,返回1,否则返回0。链栈的操作-进栈3.309链

6、栈的操作-退栈3.31、退栈2、算法思路:当栈空时,提示“栈空”,返回0当栈不空时,先将栈顶元素的值存入指针p指向的变量,再将栈顶结点删除。 判断栈S是否栈空topBACStackNode *p=S-top;*x=p-data; S-top=p-next; free(p);ptop091、退栈2、算法思路:当栈空时,提示“栈空”,返回0当栈不空时,先将栈顶元素的值存入指针p指向的变量,再将栈顶结点删除。 判断栈S是否栈空BAStackNode *p=S-top;*x=p-data; S-top=p-next; free(p);top链栈的操作-退栈3.3三、链表的插入103、具体算法:int Pop(LinkStack *S, DataType *x)/退栈StackNode *p=S-top;/保存栈顶指针if(StackEmpty(S)puts(栈空); return 0;*x=p-data; /保存栈顶结点数据S-top=p-next; /将栈顶结点从链上摘下free(p);return 1; 可将栈S和指针x作为参数。保存栈顶结点的数据,移除栈顶结点。退栈操作成功时,返回1,否则返回0。链栈的操作-退栈3.311链栈的操作-取栈顶元素3.31、取栈顶元素2、具体算法: 保存栈顶结点的数据。操作成功时,返回1,否则返回0。可将栈S和指针x作为参数。int StackT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论