简单的数据结构Word文档格式.docx

上传人:b****5 文档编号:15843667 上传时间:2022-11-16 格式:DOCX 页数:22 大小:236.84KB
下载 相关 举报
简单的数据结构Word文档格式.docx_第1页
第1页 / 共22页
简单的数据结构Word文档格式.docx_第2页
第2页 / 共22页
简单的数据结构Word文档格式.docx_第3页
第3页 / 共22页
简单的数据结构Word文档格式.docx_第4页
第4页 / 共22页
简单的数据结构Word文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

简单的数据结构Word文档格式.docx

《简单的数据结构Word文档格式.docx》由会员分享,可在线阅读,更多相关《简单的数据结构Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。

简单的数据结构Word文档格式.docx

stack;

2.进栈过程push(s,x,top)——往栈S中压人一个值为X的数据项

procedurepush(vars:

x:

stype;

vartop:

integer);

BEGIN

iftop=0thenwrite(’underflow’)

else

top:

=top+1;

s[top]:

=x;

END;

3.出栈函数pop(s,top)——从栈中弹出一个数据项

functionpop(vars:

integer):

BEGIN

iftop=0thenwriteln(’underflow’)

pop:

=s[top];

=top-1;

4.读数函数stop(s,top)——读栈顶的数据项

functionstop(vars:

t:

iftop=0thenwriteln(’stackempty’)

elsestop:

END

栈的用途极为广泛,在源程序编译中表达式的计算、过程的嵌套调用和递归调用等都要用到栈.

从历届初赛可以看出,栈也是属于比较容易出题的知识点,选择题、解答题等题型都有可能出现.

例、设输入元素为1、2、3、P和A,输人次序为123PA,如图4.1.2所示,元素经过栈后到达输出序列,当所有元素均到达输出序列后,有哪些序列可以作为高级语言的变量名?

高级语言变量名的定义规则:

以字母开头,字母与数字的组合.

由于必须以字母开头,所以,第一个可能出现的字母是P,那么必然要求123已经先后入栈,这样便可得到以P开头的、并且123按逆序排列的(即321)、同时A位于P后任一位置的变量名序列.此外,还需要考虑以A开头的可能情况,这只有一种情形:

AP321.所以AP321,PA321,P3A21,P32A1,P321A可以作为高级语言的变量名.

例、中缀表达式A-(B+C/D)*E的后缀形式是什么?

中缀形式:

即一般情况下的表达方式,将运算符写于参与运算的操作数的中间,操作数依原序列排。

后缀形式:

式中不再引人括号,运算符放在参与运算的操作数之后,操作数的排列依原序列,所有计算按运算符出现的顺序,严格地由左而右进行(不再考虑运算符的优先规则).所以利用椎栈的特性,可以得出本题的答案是ABCD/+E*-。

前缀表达式:

同后缀表达式一样,不包含括号,运算符放在两个运算对象的前,如-A*+B/CDE。

【练习题】单项选择题

1、设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈,出栈顺序为b,d,c,f,e,a那么栈容量至少应该是()。

A.6B.5C.4D.3E.2

2、一个栈的入栈序列为a,b,c,d,e,则栈的不可能输出序列为()

A、edcbaB、decbaC、dceabD、abcde

3.设栈的输人序列为1、2、3、……、n,输出序列为al、a2、……、an,若存在1<

=k<

=n使得ak=n,则当k<

=i<

=n时,ai为().

A.n-i+1B.n-(i-k)C.不确定

4、设栈的输入序列是(1、2、3、4),则()不可能是其出栈序列.

A.1243B.2134

C.1432D.4312

E.3214

5、已知一算术表达式的中缀形式为A+B*C—D/E,其后缀形式为ABC*+DE/一,其前缀形式为().

A.-A+B*C/DEB.-A+B*CD/EC.-+*ABC/DED.-+A*BC/DE

6、设栈的输入序列是1、2、…、n,若输出序列的第一个元素是n,则第i个输出元素是()

A.不确定B.n-i+l

C.iD.n-i

4.2队列

队列是限定在一端进行插入,另一端进行删除的特殊线性表。

正像排队买东西,排在前面人买完东西后离开队伍(删除),而后来的人总是排在队伍末尾(插入).通常把队列的删除和插分别称为出队和人队.允许出队的一端称为队首,允许人队的一端称为队尾.所有需要进队数据项,只能从队尾进人,队列中的数据项只能从队首离去.由于总是先入队的元素先出队(排队的人先买完东西),这种表也称为“先进先出"

(FIFO)表.

队列可以用数组Q[1…m]来存储,数组的上界m即是队列所容许的最大容量.在队列的算中需设两个指针:

head:

队首指针,指向实际队头元素的前一个位置

tail:

队尾指针,指向实际队尾元素所在的位置

队列中拥有的元素个数为:

L=tail—head.一般情况下,两个指针的初值设为O,这时队列为空,没有元素.

用Pascal语言模拟队列的定义和操作.

1.队列的定义

CONST

m=队列元素的上限;

TYPE

equeue=array[1..m]ofqtype;

{队列的类型定义}

VAR

q:

equeue;

{队列}

head,tail:

integer;

{队首指针与队尾指针}

2.人队过程add(q,x,taxi)——在队列的尾端插入元素x

procedureadd(varq:

qtype;

vattail:

BEGIN

iftail:

mthenwriteln(’overflow’){队列满上溢}

tail:

=tail+l;

q[tail]:

END

END;

3.出队过程del(q,y,head,tail)——取出q队列的队首元素Y

proceduredel(varq:

Vary:

Varhead,tail:

ifhead=tailthenwriteln(’underflow’){列表空下溢}

else

head:

=head+1;

y:

=q[head];

END

对循环队列的操作要区别于一般队列:

(1)初始时队列空,队首指针和队尾指针均指向存储空间的最后一个位置,即head=tail:

m.

(2)入队运算时,尾指针进一,即

iftail=m+1thentail:

=1

这两条语句可用一条语句替代:

=tailmodm+1

(3)出队运算时,首指针进一,即

head:

=head+1;

ifhead=m+1thenhead:

=headmodm+1

(4)队列空时,head=tail

(5)队列满时,head=tailmodm+1

为了区分队列空和队列满,改用“队尾指针追上队首指针’’这一特征作为队列满标志.这种处理方法的缺点是浪费队列空间的一个存储单元.

所以,我们重新得到另外两种循环队列的运算.

1.人队过程add(q,x,taxi)——在队列的尾端插入元素x

procedureadd(vatq:

vartajl:

VARt:

t:

=tailmodm+1;

ift=headthenwriteln(’full’)

else

=t;

q[tail]:

END;

2.出队过程del(q,y,head,tail)——取出q队列的队首元素y

vary:

varhead:

ifhead=tailwriteIn('

empty’)

BEGIN

=headmodm+1;

y:

=q[head];

【练习题】单项选择题:

1.若用一个大小为6的数组来实现循环队列,且当一和front的值分别为0和3。

当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?

A.1和5B.2和4

C.4和2D.5和1

2.设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的序列是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是().

A.6B.4

C.3D.2

3.如右图所示的循环队列中元素数目是().其中

tail=32指向队尾元素,head=15指向队首元素的前

一个空位置,队列空间m=60.

A.42B.16

C.17D.41

4.3树

前两节学习的栈和队列属于线性结构.在这种结构中,数据元素的逻辑位置之间呈线性关系,每一个数据元素通常只有一个前件(除第一个元素外)和一个后件(除最后一个元素外).在实际生活中,可以用线性结构描述数据元素之间逻辑关系的问题是很广泛的,但也有很多问题不能依靠线性结构来解决,例如家谱、行政组织机构等都是非线性的数据结构.其中树就是一种非线性的数据结构.

(一)树的递归定义为树(Tree)是n(n≥O)个结点的有限集T,T为空时称为空树,否则它满足

如下两个条件:

(1)有且仅有一个特定的称为根(Root)的结点;

(2)其余的结点可分为m(m≥0)个互不相交的子集,T1,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(Subtree).

比如在现实生活中,有如下血统关系的家族可用树形图(图4-3-1)表示:

 

张源有三个孩子张明、张亮和张丽;

张明有两个孩子张林和张维;

张亮有三个孩子张平和张群;

张丽有两个孩子张晶和张磊.

以上表示很像一棵倒画的树.其中“树根”是张源,树的“分支点"

是张明、张亮和张平,该家族的其余成员均是“树叶"

,而树枝(即图中的线段)则描述了家族成员之间的关系.显然,以张源为根的树是一个大家庭.它可以分成张

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1