




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
线性结构数组、栈和队列相关知识: 一维数组 | 多维数组 | 栈 | 队列 | 串一、一维数组1.一维数组的存储由于数组中所有元素属于同一类型,所以每个元素在存储器中占用的空间大小相同。假设数组的第一个元素存放的位置为LOC(k1),每个元素占用的空间大小为S,则ki的存放位置为:LOC(ki)=LOC(k1)+S*(i-1)组2.一维数组的操作元素的插入和删除由于需要保持运算结果仍然是顺序存储,所以在进行元素的插入和删除时可能要移动一系列元素。例子:Josephus(约瑟夫)问题。3.例题: (1)猴子选大王n只猴子选大王,选举办法如下:从头到尾1,2,3报数,凡报3的退出,余下的从尾到头1,2,3报数,凡报3的退出如此类推,当剩下两只猴子时,取这时报1的为王,若想当猴王,请问当初应占据什么位置? (monky.pas) (2)狐狸捉兔子围绕着山顶有10个洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,我就藏身于这十个洞中,你从10号洞出发,先到1号洞找,第二次隔1个洞找,第三次隔2个洞找,以后如此类推,次数不限。”但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?(fox.pas)(3)约瑟夫问题设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,如此重复直到所有的人全部出列为止。对于任意给定的n,s和m,求出按出列次序得到的n个人员的顺序表。作业邮箱:二、多维数组多维数组是在一维数组的基础上发展起来的,可以看成由多个一维数组组成。储存一个数组中的所有元素,可以用线性序列来表示。以二维数Amn为例,储存元素的规律通常有“行优先”和“列优先”。A32 = a11 a12 a13a21 a22 a23a31 a32 a33按“行优先”的顺序:a11 a12 a13 a21 a22 a23 a31 a32 a33按“列优先”的顺序:a11 a21 a31 a12 a22 a32 a13 a23 a33将二维数组Amn按“行优先”顺序储存在内存以后,元素aij的地址计算函数为:LOC(aij)=LOC(a11)+(i-1)*n+(j-1)按“列优先”顺序储存在内存以后,元素aij的地址计算数为:LOC(aij)=LOC(a11)+(j-1)*m+(i-1)三维数组Almn按“行优先”为:LOC(aijk)=LOC(a111)+(i-1)*m*n+(j-1)*n+(k-1)按“列优先”为:LOC(aijk)=LOC(a111)+(k-1)*l*m+(j-1)*l+(i-1)三、栈1.栈的特点:栈是一种线性表,对于它所有的插入和删除都限制在表的同一端进行,这一端叫做栈的“顶”,另一端则叫做栈的“底”,其操作特点是“后进先出”。2.栈的一般定义:typestack=recorddata:array1.m of datatype;t:0.mend;vars:stack;3.栈的基本运算:(1)栈的插入push(s,x):往栈s中推入一个值为x的项目;若t=m则print(overflow)否则t:=t+1;datat:=x;(2)栈的弹出pop(s):从栈s中弹出一个项目;若t=0则print(underflow)否则t:=t-1;(3)读栈顶元素top(s,x):把栈顶元素的值读到变量x中,栈保持不变;若t=0则print(error)否则x:=datat;(4)判栈是否为空sempty(s):这是一个布尔函数,当栈st中没有元素(即t=0)时,称它为空栈,函数取真值,否则值为假。若t=0则sempty:=true否则sempty:=false;4.栈的应用之一计算表达式的值(1)表达式的三种形式:中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3;后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:2 1 + 3 *;前缀表达式:同后缀表达式一样,不包含括号,运算符放在两个运算对象的前面,如:* + 2 1 3。(2)表达式的计算:由于后缀表达式中没有括号,不需判别优先级,计算严格从左向右进行,故计算一个后缀表达式要比计算机一个中缀表达式简单得多。(2+1)*3;将中缀表达式转换为后缀表达式的算法思想:当读到数字直接送至输出队列中当读到运算符t时,a.将栈中所有优先级高于或等于t的运算符弹出,送到输出队列中;b.t进栈读到左括号时总是将它压入栈中读到右括号时,将靠近栈顶的第一个左括号上面的运算符全部依次弹出,送至输出队列后,再丢弃左括号。 运用后缀表达式进行计算的具体做法:建立一个栈S从左到右读后缀表达式,读到数字就将它转换为数值压入栈S中,读到运算符则从栈中依次弹出两个数分别到Y和X,然后以“X 运算符 Y”的形式计算机出结果,再压加栈S中如果后缀表达式未读完,就重复上面过程,最后输出栈顶的数值则为结束exepress.pas5.栈的应用之二递归算法的非递归实现示例:1) 设立运算符栈;2) 设表达式的结束符为#,预设运算符栈的栈底为#;3) 若当前字符是操作数,则直接发送给后缀式;4) 若当前字符为运算符且优先数大于栈顶运算符,则进栈,否则退出栈顶运算符发送给后缀式;5) 若当前字符是结束符,则自栈顶至栈底依次将栈中所有运算符发送给后缀式;6) (对它之前后的运算符起隔离作用,则若当前运算符为(时进栈;7) )可视为自相应左括弧开始的表达式的结束符,则从栈顶起,依次退出栈顶运算符发送给后缀式直至栈顶字符为(止。四、队列1.队列的特点:队列也是一种线性表,对于它所有的插入都在队列的一端进行,所有的删除都在另一端进行,进行删除的一端叫队列的“头”,进行插入的一端叫队列的“尾”,其操作特点是“先进先出”。2.队列的一般定义:typequeue=recorddata:array1.m of datatype;head,tail:1.mend;varq:queue;3.队列的基本操作:(1)队列的插入enq(q,x):在队列q中插入一个值为x的元素,也称为进队;qtail:=x;若tail=m则tail:=1否则tail:=tail+1;若tail=head则print(overflow)(2)队列的删除deq(q):从队列q中删除一个元素,也称为出队;若tail=head则print(underflow)否则若head=m则head:=1否则head:=head+1;(3)读队头元素head(q,x):将队列q中头部元素的值读到x中;若tail=head则print(error)否则x:=qhead;(4)判队列是否为空qempty(q):这是一个布尔函数,当q是空队列时,取真值,否则取假值。若tail=head则qempty:=true否则qempty:=false;3.队列的应用:例:设有一个表,记为L=(a1,a2,a3,.,an),其中L表名a1,a2,a3,.,an表中元素。当ai为数值时表示元素,当ai为大写字母时,表示另一个表,但不能循环定义。例如,下列的定义是合法的(约定L是第一个表的表名):L=(3.4,3,4,K,8,0,8)K=(15,5,8,P,9,4)P=(4,7,8,9)程序要求:当全部表给出后,示出所有元素的最大元素。思路:(1)可以建立两种队列,一种队列是存放数值的数值队列Q1,并有Q1A到Q1Z共26条数值队列,另一种队列Q2存放字母,表示将要向该字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州六盘水高新技术产业开发区社会工作服务中心公益性岗位招聘笔试参考题库附答案解析
- 2025山证国际校园招聘笔试模拟试题及答案解析
- 2025内蒙古通辽扎旗能投集团敦德诺尔露天煤矿招聘人员1人实施考试参考题库附答案解析
- 2025武汉工程大学招聘非事业编制工作人员1人(九)考试参考题库附答案解析
- 2025上海市社会工作者协会专业实习生招聘笔试备考题库及答案解析
- 2025四川省国利托管重组私募基金管理有限公司总经理1人笔试参考题库附答案解析
- 2025西安数字基建有限公司招聘(12人)笔试备考试题及答案解析
- 2025四川绵阳科技城党群工作部绵阳科技城社会事业局招募医疗卫生辅助岗人员15人笔试模拟试题及答案解析
- 2025浙江金华市数字红人文化传媒有限公司劳务派遣人员招聘9人笔试参考题库附答案解析
- 2025四川达州大竹县第十一小学附属幼儿园招聘2人笔试备考题库及答案解析
- DB11-T 806-2022 地面辐射供暖技术规范
- 纯英文初三数学试卷
- 《GMP自检简介》课件
- 2025年中铁建公路运营有限公司招聘笔试参考题库含答案解析
- 压缩空气流量及管径计算
- 起重吊装作业安全培训题库
- 2025年月度工作日历含农历节假日电子表格版
- 人教版三年级下册数学口算题题卡1000道带答案可打印
- 乐嘉性格色彩培训
- 急性呼吸衰竭急诊服务流程
- 财险公司新人培训
评论
0/150
提交评论