- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[电脑基础知识]3-第二章栈结构222--223
回 顾 什么是数据结构 数据结构的内涵 顺序线性表 第二章基本数据结构及运算 1 数据结构的基本概念 2 线性表及其顺序存储结构 3 线性链表及其运算 4 数组 5 树与二叉树 6 图 2.2.2 栈及其运算 1. 栈△ 按照FILO(First In Last Out)原则组织数据的线性表。 1. 栈结构特点 栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为栈底(bottom) 栈的物理存储可以用顺序存储结构,也可以用链式存储结构 栈的顺序存储 2. 栈运算举例 3.堆栈结构的C语言描述 顺序堆栈的类型定义 #define M 10 typedef struct { int elem[M]; int top; } SQSTACK; 4. 栈的运算—栈的初始化与判空 栈初始化 Void InitStack(SQSTACK *stack) { stack -top=0; } 栈判空 Int StackEmpty(SQSTACK stack) { if (stack.top==0) return (1); return (0); } 5. 栈运算—入栈 push int Push(SQSTACK *stack, int x) { if (stack-top==M-1) return (1); stack-top++; stack-elem[stack-top]=x; return (0); } 6. 栈运算—出栈 pop int Pop(SQSTACK *stack, int *x) { if (StackEmpty(*stack)) return (1); *x=stack-elem[stack-top]; stack-top--; return (0); } 7. 栈运算—读栈顶(top) int GetTop(SQSTACK stack, int *x) { if (stack-top==-1) return (1); *x=stack-elem[stack-top]; //stack-top--; return (0); } 8. 栈运算举例 举例:表达式计算 A + B * C – D / E; 步骤: 首先,设置两个栈:运算符栈和操作数栈; 从左到右按顺序读出表达式中的运算符或操作; 按照如下操作进行: 如果是操作数,则操作数压栈;读下一符号; 如果是运算符,则与栈顶运算符比较优先级,分别进行处理。 栈运算—入栈 push int Push(SQSTACK *stack, int x) { if (stack-top==M-1) return (1); stack-top++; stack-elem[stack-top]=x; return (0); } 栈运算—出栈 pop int Pop(SQSTACK *stack, int *x) { if (StackEmpty(*stack)) return (1); *x=stack-elem[stack-top]; stack-top--; return (0); } 栈运算—读栈顶(top) int GetTop(SQSTACK stack, int *x) { if (stack-top==-1) return (1); *x=stack-elem[stack-top]; //stack-top--; return (0); } 在student.c文件中: Main{ Student *sp; student stus[3]={ {“Wangping”,’m’,22,87.5} {“Liubin”.‘f’,21,89} {“Lifeng”,’m’,23,95} }; sp = stu[1] } 在student.h文件中定义 Struct student { char name[20]; char gender; int age; float score; } 2.2.3 队列及其运算 1. 队列(queue) △ :一种特殊的线性表,遵守FIFO(First In Firs
文档评论(0)