- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
栈与栈的应用 蔡志祥 t是 int型变量 ,指向栈顶元素在栈中的位置 1、栈空时,t=-1 2、栈满时,t=MAXNUM-1 3、栈顶元素:S[t] 4、若t=-1时,执行pop,产生“下溢” 5、若t=MAXNUM-1时,执行push,产生“上溢” push_seq(pastack,x) PSeqStack pastack; datatype x; { if (pastack-t==MAXNUM-1) print(“overflow”); else { pastack-t++; pastack-s[pastack-t]=x;} } /* push_seq */ pop_seq(pastack) PSeqStack pastack; { if (pastack-t==-1 ) print(“underflow”); else pastack-t--; } /* pop_seq */ 例2 数制转换 void CONVERSION(int X ){ If (X/8!=0) conversion(X/8); Printf(“%d”,X%8);} * * 栈的基本概念 定义:栈(Stack)是限制仅在一端进行插入和删除运算的线性表。 允许进行插入和删除的一端称为栈顶(top) 不允许插入删除的一端称为栈底(bottom) 不含元素的栈称为空栈 往栈中存入元素称为入栈 从栈中输出元素称为出栈 特点:后进先出(LIFO)或先进后出(FILO) 示例图 栈顶 栈底 入栈 出栈 a2 a1 an ... 顺序栈 顺序栈:是利用一组地址连续的存储单元依次存放从栈底到栈顶的数据元素,通常用一维数组存放栈的元素。设“指针”top指示栈顶元素的当前位置或后一空位置。 #define MAXNUM 100 /* 栈中能达到的最大容量*/ typedef int DataType; /* 定义栈元素的数据类型* / struct SeqStack /* 顺序栈类型定义 */ { DataType s[MAXNUM]; int t; /*栈顶*/ }; typedef struct SeqStack, *PSeqStack; PSeqStack pastack; /*指向顺序栈的指针变量*/ 顺序栈 顺序栈 置空栈 判栈空 入栈 出栈 取栈顶 顺序栈下栈的5种运算: 顺序栈 1.置空栈 PSeqStack createEmptyStack_seq(void) { PSeqStack pastack; pastack=malloc(sizeof(struct SeqStack)); if(pastack==NULL) printf(“out of space!\n”); else pastack-t= -1; return pastack; } /*SETNULL*/ 2.判栈空 int isEmptyStack_seq(pastack) PSeqStack pastack; { if (pastack-t=0) return FALSE; else return TRUE; } 3.入栈 先修改 t 值,再放入数据 t++ s[t]=x (*pastack).t++ (*pastack).s[(*pastack).t]=x push_seq(pastack,x) 3.入栈 4. 退栈(算法4.4) pop_seq(pastack) 修改 t 值 t-- pastack-t - - 4.出栈 6 5 4 3 2 1 0 -1 A B C D 进栈和退栈演示图 5.取栈顶元素 datatype top_seq(pastack) PSeqStack pastack; { if (pastack-t==-1 ) { print(“stack is empty”); return NULL; } else return(pastack-s[pastack-t]; } /* top_seq */ 多个栈共享存储空间 … … ... 栈1 栈2 栈1底 栈1顶 栈2底 栈2顶 让多个栈共享存储空间,可以相互调节余缺, 节约存储空间,降低发生上溢的概率。 链栈 栈的链式存储结构称为链栈。它是运算受限的 单链表。 由于只
您可能关注的文档
最近下载
- 2023年阳江市社区工作者招聘考试真题 .pdf VIP
- 《高效课堂和有效教学模式研究》结题报告材料.pdf VIP
- 生猪、牛、羊、鸡、鸭、鹅屠宰HACCP计划模式表.pdf VIP
- 2024-2025学年广西壮族自治区小升初英语真题(含答案).pdf VIP
- 环保项目设备供货及服务保障措施.docx VIP
- 初中物理每日默写知识点(1)_Decrypted.pdf VIP
- 人教版信息科技四年级《多彩的数字世界》教学PPT课件.pptx VIP
- 我的幸福大家庭.pptx VIP
- 安全教育开学第一课主题班会PPT课件.pptx VIP
- (2025秋新版)人教版数学二年级上册教学计划.docx VIP
文档评论(0)