- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
pascal-栈和队列.doc
栈 .栈的特点: 栈是一种线性表,对于它所有的插入和删除都限制在表的同一端进行,这一端叫做栈的“顶”,另一端则叫做栈的“底”,其操作特点是“后进先出”。 .栈的
定义: — 顺序栈
s为栈、p为指向栈顶的指针
type stack=record data:array[1..m] of datatype; p:0..m end; var s:stack; — 链式栈
bottom
当栈的容量无法估计时,可采用链表结构
--链式栈.
链式栈的栈顶在链头.
无栈满问题,空间可扩充.
进栈(插入)与出栈(删除)都在栈顶处执行.
.栈的基本: (1)栈push(s,x):往栈中推入x的项目; 若p=m则(overflow)
否则:=p+1;s[p]:=x;
(2)出栈pop(s):栈中弹出; 若p=0则(underflow) 否则p:=-1; (3)读栈顶元素top(,x):把栈顶元素的值读到变量x中,栈保持不变; 若=0则(error) 否则x:=[p]; (4)判栈是否为空sempty(s):这是一个布尔函数,当栈sp中没有元素(即t=0)时,称它为空栈,函数取真值,否则值为假。 若p=0则sempty:=true 否则sempty:=false; .栈的应用(1)表达式的三种形式: 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3; 后缀表达式:如:(2+1)*3表示为后缀表达式为2 1 + 3 *; 前缀表达式:同后缀表达式一样,不包含括号,运算符放在两个运算对象的前面,如:* + 2 1 3。(2)表达式的计算由于后缀表达式中没有括号,不需判别优先级,计算严格从左向右进行,故计算一个后缀表达式要比计算机一个中缀表达式简单得多。 1当读到数字直接送至中 2当读到运算符t时, a.将栈中所有优先级高于或等于t的运算符弹出,送到中; b.t进栈 3读到左括号时总是将它压入栈中 4读到右括号时,将靠近栈顶的第一个左括号上面的运算符全部依次弹出,送至后,再丢弃左括号。
程序}
2、若表达中操作数为非个位数值,如何实现表达式计算。
队列
1.队列的特点: 队列也是一种线性表,对于它所有的插入都在队列的一端进行,所有的删除都在另一端进行,进行删除的一端叫队列的“头”(front),进行插入的一端叫队列的“尾”(rear),其操作特点是“先进先出”。 (FIFO, First In First Out)
2.队列的抽象数据
定义: (1)队列的数组表示??
type queue=record data:array[1..m] of datatype; front,rear:1..m end; var q:queue;
(2)队列的链接表示 — 链式队列
队头在链头,队尾在链尾。
链式队列在进队时无队满问题,但有队空问题。
队空条件为 front =nil
链式队列编码举例
type
queue=^struct;
struct=record
data: datatype;
link:queue;
end;
var front,rear,q1,q2:queue;
(3)循环队列:存储队列的数组(或链表)被当作首尾相接的表处理
3.队列的基本操作: (1)队列的插入enq(q,x):在队列q中插入一个值为x的元素,也称为进队; q[rear]:=x; 若rear=m则rear:=1 否则rear:=rear+1; 若rear=front则write(overflow) (2)队列的删除deq(q):从队列q中删除一个元素,也称为出队; 若rear=front则write(underflow) 否则 若front=m则front:=1否则front:=front+1; (3)读队头元素front(q,x):将队列q中头部元素的值读到x中; 若rear=front则write(error) 否则x:=q[front]; (4)判队列是否为空qempty(q):这是一个布尔函数,当q是空队列时,取真值,否则取假值。 若rear=front则qempty:=true 否则qempty:=false; 3.队列的应用: 例、广义表(是线性表的一种推广;允许构成线性表的元素本身又可以是线性表,则
文档评论(0)