- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构栈、查找、串和队列ppt203
数据结构 数据结构栈 栈的初步认识 栈是限定只能在表的一端进行操作的线性表。 特点: ’后进先出’,栈又称作后进先出表(LIFO,即Last In First Out)。 一般表示及基本术语 栈是限定只能在表的一端进行操作的线性表。 S=(a1,a2,……ai-1,ai,ai+1,……an) 栈顶(top)在表中允许插入和删除的一端 栈底(botton)不允许插入和删除的一端 入栈(push)向栈顶插入一个元素的操作 出栈(pop)从栈顶取出一个元素的操作 栈一经确定,则栈底便固定不变,而栈顶随入栈、出栈操作的执行不断地变化。 特点: ’后进先出’,栈又称作后进先出表(LIFO,即Last In First Out)。 主要的基本操作 入栈 push(s)向栈s的栈顶插入一个元素 出栈 pop(s) 从栈s的栈顶取出一个元素 取元素 gettop(s)返回栈s的栈顶元素 求长度 current-size(s)求栈s的元素个数 判空 empty(s)判栈s是否为空栈 清空 clear(s)将栈s清空 栈的主要应用 实现递归过程。必须设置一个数据栈来存放递归过程中的参数与局部变量等信息 回塑法求解问题。为了达到正确的目的地,必须设置一个栈来记录已走过的路径上的每一点的有关信息 表达式的翻译。必须设置一个栈来存放暂不能处理的那些符号或被用于检查表达式中的各种括号是否配对。 栈的存储方式 顺序栈的结构形式 用一组地址连续的存储单元来依次存储栈中的各个元素。 Top与栈的状态的关系 顺序栈的类型定义 const int max=栈中允许存放元素个数的最大值; typedef struct { elemtp elem [max]; int top; } sqstktp; sqstktp s; s.top表示栈顶指示器, s.elem[s.top]表示栈顶元素 链栈结构形式及特点 顺序栈的不足之处: 难以为它确定适当的存储空间的大小 链栈的结构特点: 使用一个链表来表示一个栈, 链栈结构形式及特点 使用一个链表来表示一个栈,链和栈之间存在以下的对应关系: 链尾元素相当于栈底元素 链头元素相当于栈顶元素,链头指针相当于栈顶指针。 入栈操作相当于从链头插入一个元素 出栈操作相当于从链头删除一个元素 链栈的类型定义 struct node { elemtp data; struct node *next; }; typedef struct node nodetp; typedef struct node *link; typedef link linked_stack; 链栈可以用一个指向栈顶的指针型变量top来表示,其定义如下: linked_stack top; 当top=NULL时,这个栈就成为空栈, 当top不等于NULL时,就可以通过top指针来访问栈顶元素。 顺序栈的类定义 顺序栈的构造函数及析构函数 顺序栈的入栈操作 入栈操作 入栈操作程序代码 顺序栈的出栈操作 出栈操作 顺序栈的取栈顶操作 链栈结点的类定义 链栈的类定义 链栈的入栈操作 入栈操作 链栈的出栈操作 出栈操作表示形式 括号配对检查程序 处理过程 对输入表达式进行扫描, 当遇到左括号时,左括号入栈; 当遇到右括号时,首先从栈顶弹出一个元素,并比较弹出元素是否与右括号匹配,如果两者不匹配,则返回出错信息并结束处理。否则扫描继续, 当表达式全部扫描完时如果栈为空,说明括号配对正确返回正常信息。 括号配对检查程序 执行过程中栈的变化 #{ ( [ …… ]…)…{ (……)……} }# 括号配对检查程序 主程序 (由顶向下的程序设计方法) String st; st=Edit1-Text; if ( parenthesis(st) ) ShowMessage(the paren is valid); else ShowMessage(the paren is invalid); 括号配对检查程序 函数的表示形式 bool parenthesis (String st) 功能:对st中的输入表达式括号配对的合法性进行检查,如果合法则返回true,否则返回false。 在程序中,变量lz1表示由链栈类Tlz所生成的实体,字符型的变量ch,symb分别表示从栈顶弹出的字符与从输入表达式中读入的当前字符。 bool parenthesis (String st) {bool valid; int i; char ch,symb; valid=true; lz1-push(#); sym
您可能关注的文档
- Visual Basic 6.0程序设计案例教程(上)ppt211.ppt
- VB程序设计(下)ppt280.ppt
- JSP基础教程(第2版)实验练习与提高doc101.doc
- Visual Basic 6.0程序设计案例教程(下)ppt195.ppt
- Visual Basic 程序设计与实训教程(上)ppt197.ppt
- 全民健康保险药品给付规定修正规定.doc
- Visual Basic .NET程序设计教程(上)ppt133.ppt
- VB教材教学资源(范慧琳)下ppt268.ppt
- Visual Basic 程序设计与实训教程(下)ppt175.ppt
- Visual Basic. NET 程序设计(下)ppt250.ppt
最近下载
- 《低钠血症的中国专家共识(2023)》解读PPT课件.pptx VIP
- 初中语文通用版 现代文阅读答题技巧(公式化模板 + 完整版提分攻略).docx VIP
- 期刊合作办刊协议书.docx VIP
- 驭胜s350维修手册及电路图n351整车电路图全.pdf VIP
- 混凝土热工计算软件.xls VIP
- 小学信息技术教学计划.docx VIP
- 八 观察物体(二)(单元教学设计)苏教版 三年级上册数学2025版.pdf
- 七上语文常考必背重点知识梳理总结(答案版)【2024新版】.pdf VIP
- 最全面总工会招聘考试工会知识模拟试卷及答案(共五套).docx
- 2020年总工会招聘考试工会知识模拟试卷及答案(一).docx VIP
原创力文档


文档评论(0)