ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:87.90KB ,
资源ID:19867475      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19867475.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构练习 第三章 栈和队列Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构练习 第三章 栈和队列Word下载.docx

1、8队列是一种( )的线性表。A. 先进先出 B. 先进后出 C. 只能插入 D. 只能删除9设输入序列1、2、3、n经过栈作用后,输出序列中的第一个元素是n,则输出序列中的第i个输出元素是( )。A. n-i B. n-1-i C. n+l -i D.不能确定10设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为( )。A. 5,3,4,6,1,2 B. 3,2,5,6,4,1C. 3,1,2,5,4,6 D. 1,5,4,6,2,311队列的删除操作是在( )进行。A队首 B队尾 C队前 D队后12当利用大小为N 的数组顺序存储一个栈时,假定用top = = N表示栈空

2、,则退栈时,用( )语句修改top指针。Atop+; Btop=0; Ctop-; Dtop=N;13队列的插入操作是在( )进行。A队首 B队尾 C队前 D队后14若已有一个栈,输入序列为A,B,C,D,E,那么下面哪种序列不可能得到?( )AABCDE BEDCBA CBAEDC DECDBA(d) 注意: 入栈和出栈操作可以交替进行,因此就可能有多种输出序列了。15栈和队列共同具有的特点是()A.都是先进后出 B.都是先进先出C.只允许在端点进行操作运算 D.既能先进先出,也能先进后出16若用一个有6个单元的数组来实现循环队列,rear和front的初值分别为0和3。则从队列中删除一个元

3、素,再添加两个元素后,rear和front的值分别为()A.1和5 B.2和4 C.4和2 D.5和117一个栈的入栈序列是a,b,c,d,e,则栈的输出序列不可能是( )A. dceab B. decba C. edcba D. abcde18元素大小为1个单元,容量为n个单元的非空顺序栈中,以地址高端为栈底,以top作为栈顶指针,则出栈处理后,top的值应修改为( )A. top=top B. top=n-1 C. top=top-1 D. top=top+119设有一个栈,按A、B、C、D的顺序进栈,则可能为出栈序列的是( )A.DCBA B.CDAB C.DBAC D.DCAB20在一

4、个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top为栈顶指针,则当做出栈处理时,top变化为( )A.top+ B.top- C.top不变 D.top=021. 关于栈和队列的说法中正确的是( )A栈和队列都是线性结构B.栈是线性结构,队列不是线性结构C.栈不是线性结构,队列是线性结构D.栈和队列都不是线性结构22. 设一个栈的输入序列是a,b,c,d,则所得到的输出序列(输入过程中允许出栈)不可能出现的是( )Aa,b,c,d B.a,b,d,cC.d,c,b,a D.c,d,a,b 23. 在具有m个单元的循环队列中,队头指针为front,队尾指针为rear,则队满的

5、条件是( )Afront=rear B.(front+1)%m=rearC.rear+1=front D.(rear+1)%m=front24. 循环队列存储在数组A0.m中,则入队时的操作为( D)。A. rear=rear+1 B. rear=(rear+1) % (m-1)C. rear=(rear+1) % m D. rear=(rear+1) % (m+1)25. 顺序栈S中top为栈顶指针,指向栈顶元素所在的位置,elem为存放栈的数组,则元素e进栈操作的主要语句为()A.s.elemtop=e; B.s.elemtop+1=e;s.top=s.top+1; s.top=s.top

6、+1;C.s.top=s.top+1; D.s.top=s.top+1;s.elemtop+1=e; s.elemtop=e;26. 循环队列sq中,用数组elem025存放数据元素,sq.front指示队头元素的前一个位置,sq.rear指示队尾元素的当前位置,设当前sq.front为20,sq.rear为12,则当前队列中的元素个数为()A.8 B.16 C.17 D.1827. 有关栈的描述,正确的是()A.栈是一种先进先出的特殊的线性表B.只能从栈顶执行插入、删除操作C.只能从栈顶执行插入、栈底执行删除D.栈顶和栈底均可执行插入、删除操作28. 设顺序循环队列Q0:M-1的头指针和尾指

7、针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为( )。A. R-F B. F-R C. (R-F+M)M D. (F-R+M)M29. 设一数列的输入顺序为1,2,3,4,5,6,通过栈操作不可能排成的输出序列为( )。A3,2,5,6,4,1 B1,5,4,6,2,3C2,4,3,5,1,6 D4,5,3,6,2,130. 设有一个栈,元素的进栈次序为A,B,C,D,E,则下列( )是不可能的出栈序列。 AA,B,C,D,E BB,C,D,E,A CE,A,B,C,D DE,D,C,B,A31在具有N个单元的顺序存储循环队列

8、中,假定front和rear分别为对头指针和对尾指针,则判断对满的条件为( )。Afront= rear B(rear+1)%MAXSIZE=frontCfront-rear=1 Drear%MAXSIZE=front32一个元素进入队列的时间复杂度是( )。 AO(1) BO(n) CO(n2) DO(log2n)33若让元素1,2,3依次进栈,则出栈次序不可能出现( )种情况。 A.3,2,1 B.2,1,3 C.3,1,2 D.1,3,234假定一个链队的队首和队尾指针分别为front和rear,则判断队空的条件是( )。A.front=NULL B.front!=NULL C.rear

9、!=NULL D.front=rear35若让元素a,b,c依次进栈,则出栈次序不可能出现( )种情况。Acba Bbac Ccab Dacb36在一个链队列中,假定front和rear分别为队头和队尾指针,则插入*s结点的操作应执行( )。Afront-next=s; front=s; Bs-next=rear; rear=s;C rear- Ds-next=front;37栈的插入与删除操作在( )进行。A.栈顶 B.栈底 C.任意位置 D.指定位置38当利用大小为N的一维数组顺序存储一个栈时,假定用top=1表示栈空,则向这个栈插入一个元素时,首先应执行( )语句修改top指针。 Ato

10、p+; Btop-; Ctop=NULL ; Dtop;39当采用顺序存储方式存储队列时,可能出现存储空间剩余,而不允许继续入队的情况,称为( )。A溢出 B 假溢出 C队列不能用顺序存储方式 D数组存储空间过小40当利用大小为N的一维数组顺序存储一个循环队列时,该队列的最大长度为( )。 A.N-2 B.N-1 C.N D.N+141从一个循环顺序队列删除元素时,首先需要( )。A.前移一位队首指针 B.后移一位队首指针C.取出队首指针所指位置上的元素 D.取出队尾指针所指位置上的元素42循环队列存储在数组A0.m中,则入队时的操作为( )。A. rear=rear+1 B. rear=(r

11、ear+1) % (m-1)C. rear=(rear+1) % m D. rear=(rear+1) % (m+1)434个园盘的Hahoi塔,总的移动次数为( )。A.7 B. 8 C.15 D.1644对于栈操作数据的原则是( )。A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序45有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 646设栈的输入序列是1,2,3,4,则( )不可能是其出栈序列。A. 1,2,4,3, B. 2,1

12、,3,4, C. 1,4,3,2, D. 4,3,1,2, E. 3,2,1,4,47如进栈序列1,2,3,4,5。可能得到的出栈序列为( ) A1,2,5,3,4 B3,1,2,5,4 C3,2,5,4,1 D1,4,2,3,5 E都不可能48一个栈的入栈序列为A,B,C,D,E,则栈的不可能的出栈序列是( )。A. ABCDE B. EDCBA C. DECBA D.DCEAB 49function calc(x,y :integer) : integer;beginif y=1 then calc :=xelse calc := calc (x,y-1)+x end;a,b均为正整数,则

13、 calc(a,b)=( )A.a*(b-1) B. a*b C. a+b D. a+a50执行完下列语句段后,i值为:( )。int f(int x) return (x0) ? x* f(x-1):2);int i ;i =f(f(1);A2 B. 4 C. 8 D. 无限递归51表达式a*(b+c)-d的后缀表达式是( )。Aabcd*+- B. abc+*d- C. abc*+d- D. -+*abcd52允许对队列进行的操作有( )。C. 在队头元素之前插入元素 D. 删除队头元素53用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时( )

14、 A仅修改队头指针 B.仅修改队尾指针C队头,队尾指针都可能要修改 D.队头,队尾指针都要修改54对于循环队列( )。A. 无法判断队列是否为空 B. 无法判断队列是否为满C. 队列不可能满 D. 以上说法都不是55循环队列A0.m-1存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是( )。A. (rear-front+m)%m B. rear-front+1 C. rear-front-1 D. rear-front56若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front

15、的值分别为多少?A. 1和 5 B. 2和4 C. 4和2 D. 5和157栈和队的共同点是( )。A. 都是先进后出 B. 都是后进先出C. 只允许在端点处插入和删除元素 D. 没有共同点58设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是( )。A 6 B. 4 C. 3 D. 2594个园盘的Hahoi塔,总的移动次数为( ).A.7 B.-8 C.15 D.1660和顺序栈相比,链栈有一个比较明显的优势是( )。A. 通常不会出现栈满的情况 B. 通

16、常不会出现栈空的情况C. 插入操作更容易实现 D. 删除操作更容易实现61执行( )操作时,需要使用队列作辅助存储空间。A.查找哈希(Hash)表 B. 广度优先搜索网 C. 先序(根)遍历二叉树 D. 深度优先搜索网62设有一顺序栈已经含有3个元素,如图3.1所示元素a4正等待进栈。下列不可能出现的出栈序列是( A )A.a3,a1,a4,a2 B. a3,a2,a4,a1 C. a3,a4,a2,a1 D. a4,a3,a2,a1 a1a2Topa363在一个链队中,若f,r分别为队首、队尾指针,则插入s所指结点的操作为( B)A.f-f=s; B.r-r=s;C.s-next=r; D.

17、s-next=f;64若用一个大小为6的数组来实现循环队列,且当rear和front的值分别是0和3。当从队列中删除一个元素,再加入两个元素后,rear 和front 的值分别是(A )A. 2和4 B. 1和5 C. 4和2 D. 5和165有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?( C )A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6二、填空题1后缀算式9 2 3 +- 10 2 / -的值为_。中缀算式(3+4X)-2Y/3对应的后缀算式为_。-1,3 4 X * + 2 Y *

18、 3 / -2下面程序段的功能实现数据x进栈,要求在下划线处填上正确的语句。typedef struct int s100; int top; sqstack;void push(sqstack &stack,int x)if (stack.top=m-1) printf(“overflow”);else _;_; stack.top+,stack.sstack.top=x3设输入序列为1、2、3,则经过栈的作用后可以得到_种不同的输出序列。54不论是顺序存储结构的栈还是链式存储结构的栈,其入栈和出栈操作的时间复杂度均为_。O(1)5设有一个顺序循环队列中有M个存储单元,则该循环队列中最多能够

19、存储_个队列元素;当前实际存储_个队列元素(设头指针F指向当前队头元素的前一个位置,尾指针指向当前队尾元素的位置)。m-1,(R-F+M)%M6设有一个顺序共享栈S0:n-1,其中第一个栈项指针top1的初值为-1,第二个栈顶指针top2的初值为n,则判断共享栈满的条件是_。top1+1=top27栈的插入和删除只能在栈的栈顶进行,后进栈的元素必定先出栈,所以又把栈称为_表;队列的插入和删除运算分别在队列的两端进行,先进队列的元素必定先出队列,所以又把队列称为_表。FILO,FIFO8设某顺序循环队列中有m个元素,且规定队头指针F指向队头元素的前一个位置,队尾指针R指向队尾元素的当前位置,则该

20、循环队列中最多存储_队列元素。m-19设F和R分别表示顺序循环队列的头指针和尾指针,则判断该循环队列为空的条件为_。F=R10从一个栈删除元素时,首先取出 ,然后再前移一位 。栈顶元素、栈顶指针11后缀表达式“2 10 + 5 * 6 9 /”的值为 。612中缀表达示3+X*(2.4/5-6)所对应的后缀表达示为_。3 x 2.4 5 6 *13用S表示入栈操作,X表示出栈操作,若元素入栈顺序为1234,为了得到1342的出栈顺序,相应的S和X操作串为_SXSSXSXX_。14在循环队列中,存储空间为0n-1,设队头指针front指向队头元素前一个空闲元素,队尾指针指向队尾元素,那么队满标志

21、为front=(rear+1)%n,队空标志为_front=rear_。15对于栈只能在_栈顶位置_插入和删除元素。16设输入元素的顺序是A,B,C,D,通过栈的变换,在输出端可得到各种排列。若输出序列的第一个元素为D,则输出序列为_DCBA_。17队列中允许进行删除的一端为_队头_。18我们通常把队列中允许插入的一端称为_队尾_。19队列的原则是 。先进先出;20顺序存储的队列如果不采用循环方式,则会出现 问题。假溢出21栈的原则是 。先进后出。22对于一个顺序栈作进栈运算时,应先判断栈是否为 ,判断的条件是 ,作出栈运算时,应先判断栈是否为 ,判断的条件是 。满 ;top=MAXSIZE-

22、1 ;空 ;top=-1。23在长度为Maxsize的循环队列中,删除一个新元素,修改front队头指针为 。front=(front+1)/Maxsize 24在链队列中,与入队相关的指针是 、与出队有关的指针是 (头指针或尾指针)。尾指针 、 头指针 25当用长度为N的一维数组顺序存储一个栈时,假定用top=N表示栈空,则表示栈满的条件为 。top = = 026向一个栈顶指针为HS的链栈中插入一个新结点*P果,应执行 和 操作。p-next = HS 、HS = p27从一个栈顶指针为HS的非空链栈中删除结点并不需要返回栈顶结点的值和回收结点时,应执行 操作。HS = HS-next28

23、假定front和rear分别为一个链队的队首和队尾指针,则该链队中只有一个结点的条件为 。( front = = rear ) & ( front NULL )29中缀算术表达式3+4/(25-(6+15)*8 所对应的后缀算术表达式为 。3 4 25 6 15 + - / 8 * +30后缀算术表达式24 8 + 3 * 4 10 7 - * / 所对应的中缀算术表达式为 ,值为 。(24+8)*3/(4*(10-7) 、831在一个具有n个单元的顺序栈中,假定以地址高端(即下标为n的单元)作为栈底,以top作为栈顶指针,则当向栈中压入一个元素时,top的变化是top=_。 top-132在

24、作进栈运算时应先判别栈是否_(1)_;在作退栈运算时应先判别栈是否_(2)_;当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为_(3)_。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的空间时,应将两栈的_(4)_分别设在内存空间的两端,这样只有当_(5)_时才产生溢出。(1)满 (2)空 (3)n (4)栈底 (5)两栈顶指针相邻(即值之差的绝对值为1)33多个栈共存时,最好用_作为存储结构。链式存储结构34顺序栈用data1.n存储数据,栈顶指针是top,则值为x的元素入栈的操作是_。if(top!=n) data+top=x;35循环队列的引入,目的是为了

25、克服_。假溢出时大量移动数据元素。36设a=6, b=4, c=2, d=3, e=2, 则后缀表达式abc-/de*+的值为_。937在循环队列中,队列长度为n ,存储位置从0到n-1编号,以rear指示实际的队尾元素,现要在此队列中插入一个新元素,新元素的位置是( )。 rear=(rear+1)%n38已知链队列的头尾指针分别是f和r,则将值x入队的操作序列是_。s=(LNode *)malloc(sizeof(Lnode); s-data=x;s-next=r-next;r-r=s;39区分循环队列的满与空,只有两种方法,它们是_和_。牺牲一个存储单元 设标记40已知一循环队列的存储空

26、间为m.n,其中nm,队头和队尾指针分别为front和rear,则此循环队列判满的条件是( ) (rear+1)%(n-m+1)=front41设有元素序列的入栈次序为:(a1,a2,an),其出栈的次序为(ap1,ap2,apn) 现已知pl=n,则pi=_。n-i+142用循环链表表示的队列长度为n,若只设头指针,则出队和入队的时间复杂度分别是 _和_;若只设尾指针,则出队和入队的时间复杂度分别是_和_。O(1),O(n),O(1),O(1)43下面程序的功能是用递归算法将一个整数按逆序存放到一个字符数组中。如123存放成321。请填空:#includevoid convert(char *a, int n) int i;if(i=n/10) convert(_,i);*a=_;main()int number; char str10=”;scanf(“%d”,&number);convert(str,number); puts(str); a+1 n%1044写出下面程序的运行结果 program priout(input

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

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