数据结构第三章题目

合集下载

(完整word版)数据结构复习题-第3章答案2014-6-16(word文档良心出品)

(完整word版)数据结构复习题-第3章答案2014-6-16(word文档良心出品)

第3章栈和队列答案:一、选择题1-5 BCBCB 6-10BCCDD 11-15 BDBBD16-20CCBDB16题解释:一般只需修改队头指针,不过当队列里面只有一个结点时,需要同时修改队尾指针。

二、判断题1-5 ×√×√√6-10 √√√√×11-16√√√××√三、填空题1.栈顶、栈底2. 入栈、出栈3. 队列、先进先出4.栈5.队列6.先进先出7. (R-P+N) % N8. n-1 牺牲一个存储单元、设标记栈底、两栈顶指针相邻(即值之差的绝对值为1)1.没有、一2. 数据域、指针域3. 前驱4.前驱、后继5.前驱、后继6.头结点7.循环链表8. n-19. 栈后进先出10.SXSSXSXX 11.3,1,2 12.牺牲一个存储单元设标记 13.栈底两栈顶指针相邻(即值之差的绝对值为1)四、简答题(每小题5分,共10分)1.简述队列和栈这两种数据类型的相同点和差异处。

答:队列和栈都是操作受限的线性表,都属于线性表的逻辑结构。

区别在于,队列的插入是在队尾端进行,删除是在队头端进行;而栈的插入和删除都只能在栈顶端进行。

2.简述栈和线性表的差别。

答:栈是操作受限的线性表,栈的插入和删除操作都只能在栈顶端进行,因而相应的称为“入栈”和“出栈”。

3.说明线性表、栈与队列的异同点。

答:相同点:都是线性结构;不同点:队列和栈都是操作受限的线性表,队列的插入是在队尾端进行,删除是在队头端进行;而栈的插入和删除都只能在栈顶端进行,而线性表的插入、删除则不受限制,可以在任何位置进行。

4.链栈中为何不设置头结点?答:链栈不需要在头部附加头结点,因为栈都是在头部进行操作的,如果加了头结点,等于要对头结点之后的结点进行操作,反而使算法更复杂,所以只要有链表的头指针就可以了。

5.什么是循环队列?答:用常规意义下顺序存储结构的一维数组表示队列,由于队列的性质(队尾插入和队头删除),容易造成“假溢出”现象,即队尾已到达一维数组的最高下标,不能再插入,然而队中元素个数小于队列的长度(容量)。

数据结构第三章栈和队列3习题

数据结构第三章栈和队列3习题

第三章栈和队列试题一、单项选择题1.栈的插入和删除操作在()进行。

A. 栈顶B. 栈底C. 任意位置D. 指定位置2.当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。

A. top++;B. top--;C. top = 0;D. top;3.若让元素1,2,3依次进栈,则出栈次序不可能出现()种情况。

A. 3, 2, 1B. 2, 1, 3C. 3, 1, 2D. 1, 3, 24.在一个顺序存储的循环队列中,队头指针指向队头元素的()位置。

A. 前一个B. 后一个C. 当前D. 后面5.当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为()。

A. n-2B. n-1C. nD. n+16.从一个顺序存储的循环队列中删除一个元素时,需要()。

A. 队头指针加一B. 队头指针减一C. 取出队头指针所指的元素D. 取出队尾指针所指的元素7.假定一个顺序存储的循环队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。

A. front+1 == rearB. rear+1 == frontC. front == 0D. front == rear8.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。

A. front == rearB. front != NULLC. rear != NULLD. front == NULL9.设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。

若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行操作()。

A. top->link = s;B.s->link = top->link; top->link = s;C. s->link = top; top = s;D. s->link = top; top = top->link;10.设链式栈中结点的结构为(data, link),且top是指向栈顶的指针。

数据结构第三章习题

数据结构第三章习题

第三章习题1.按图3.1(b)所示铁道(两侧铁道均为单向行驶道)进行车厢调度,回答:⑴如进站的车厢序列为123,则可能得到的出站车厢序列是什么?⑵如进站的车厢序列为123456,能否得到435612和135426的出站序列,并说明原因。

(即写出以“S”表示进栈、以“X”表示出栈的栈操作序列)。

2.设队列中有A、B、C、D、E这5个元素,其中队首元素为A。

如果对这个队列重复执行下列4步操作:(1)输出队首元素;(2)把队首元素值插入到队尾;(3)删除队首元素;(4)再次删除队首元素。

直到队列成为空队列为止,得到输出序列:(1)A、C、E、C、C (2) A、C、E(3) A、C、E、C、C、C (4) A、C、E、C3.给出栈的两种存储结构形式名称,在这两种栈的存储结构中如何判别栈空与栈满?4.按照四则运算加、减、乘、除和幂运算(↑)优先关系的惯例,画出对下列算术表达式求值时操作数栈和运算符栈的变化过程:A-B*C/D+E↑F5.试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如‘序列1&序列2’模式的字符序列。

其中序列1和序列2中都不含字符’&’,且序列2是序列1的逆序列。

例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。

6.假设表达式由单字母变量和双目四则运算算符构成。

试写一个算法,将一个通常书写形式且书写正确的表达式转换为逆波兰式。

7.假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化、入队列和出队列的算法。

8.要求循环队列不损失一个空间全部都能得到利用, 设置一个标志域tag , 以tag为0或1来区分头尾指针相同时的队列状态的空与满,请编写与此结构相应的入队与出队算法。

9.简述以下算法的功能(其中栈和队列的元素类型均为int):(1)void proc_1(Stack S){ int i, n, A[255];n=0;while(!EmptyStack(S)){n++; Pop(&S, &A[n]);} for(i=1; i<=n; i++)Push(&S, A[i]);}(2)void proc_2(Stack S, int e) { Stack T; int d;InitStack(&T);while(!EmptyStack(S)){ Pop(&S, &d);if (d!=e) Push( &T, d);}while(!EmptyStack(T)){ Pop(&T, &d);Push( &S, d);}}(3)void proc_3(Queue *Q){ Stack S; int d;InitStack(&S);while(!EmptyQueue(*Q)){DeleteQueue(Q, &d);Push( &S, d);}while(!EmptyStack(S)){ Pop(&S, &d);EnterQueue(Q,d)}}实习题1.回文判断。

数据结构练习题第三章栈、队列和数组习题及答案

数据结构练习题第三章栈、队列和数组习题及答案

第三章栈、队列和数组一、名词解释:1.栈、栈顶、栈底、栈顶元素、空栈2.顺序栈3.链栈4.递归5.队列、队尾、队头6.顺序队7.循环队8.队满9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵二、填空题:1.栈修改的原则是_________或称________,因此,栈又称为________线性表。

在栈顶进行插入运算,被称为________或________,在栈顶进行删除运算,被称为________或________。

2.栈的基本运算至少应包括________、________、________、________、________五种。

3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“________”。

4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“________”。

5.一般地,栈和线性表类似有两种实现方法,即________实现和________实现。

6.top=0表示________,此时作退栈运算,则产生“________”;top=sqstack_maxsize-1表示________,此时作进栈运算,则产生“________”。

7.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以填充。

int InitStack(SqStackTp *sq){ ________;return(1);}8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。

Int Push(SqStackTp *sq,DataType x){ if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);}else{________________:________________=x;return(1);}}9.以下运算实现在顺序栈上的退栈,请在________________用适当句子予以填充。

数据结构第三章习题

数据结构第三章习题

数据结构第三章习题本文共分为三部分,分别针对数据结构第三章中的不同习题进行解答。

第一部分,解答关于树和二叉树的习题。

1.对于给定的有“n(n>0)”个结点的树,边数应为“n-1”条。

解析:树是一种无环连通无向图,因此任意n个结点的树有n-1条边。

2.往2(2≤n≤64)叉树的每个结点上添加一个数据元素,设计一个数据结构,实现迅速求该2叉树中所有结点的数据元素之和。

解析:可以使用先序遍历算法来完成,先序遍历树的根节点,然后递归遍历左子树和右子树,将每个结点的数据元素加和。

3.设计一个算法,判定给定的二叉树是否是完全二叉树。

解析:可以使用层次遍历算法来判定。

如果一棵树是完全二叉树,那么层次遍历结果中,如果一些结点有右孩子,那么该结点之后的所有结点都必须有孩子;如果一些结点没有右孩子,则该结点之后的所有结点都不能有孩子。

4.设有一棵完全二叉树,编写算法,生成一棵采用二叉链表存储结构的二叉树。

解析:可以使用层次遍历算法来构建树。

从根节点开始,依次按层次遍历的顺序遍历所有结点,依次将结点和它的孩子结点用链表链接起来。

第二部分,解答关于图的习题。

1.利用邻接表存储图,写出一个算法,判断两个节点之间是否存在路径。

解析:可以使用深度优先算法或广度优先算法来判断两个节点之间是否存在路径。

首先从起始节点开始,遍历其邻接节点,递归或使用队列来保存需要遍历的节点,直到遍历到目标节点或遍历完所有的节点。

2.利用邻接表存储图,写出一个算法,求图的连通分量个数。

解析:可以使用深度优先算法或广度优先算法来求图的连通分量个数。

首先从起始节点开始,遍历其邻接节点,标记遍历过的节点,直到遍历完所有的节点。

每次从一个未标记的节点开始进行遍历,当所有的节点都被遍历过后,即可得到图的连通分量个数。

3.利用邻接表存储图,写出一个算法,判断给定的图是否为无向图。

解析:可以遍历所有的边,对于每一条边(u,v),如果(u,v)存在,则判断(v,u)是否存在,如果都存在,则图为无向图,否则为有向图。

数据结构第三章考试题库(含答案)

数据结构第三章考试题库(含答案)

第3章栈和队列一选择题1. 对于栈操作数据的原则是()。

【青岛大学2001 五、2(2分)】A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2. 在作进栈运算时,应先判别栈是否( ①),在作退栈运算时应先判别栈是否( ②)。

当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( ③)。

为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的( ④)分别设在这片内存空间的两端,这样,当( ⑤)时,才产生上溢。

①, ②: A. 空 B. 满 C. 上溢 D. 下溢③: A. n-1 B. n C. n+1 D. n/2④: A. 长度 B. 深度 C. 栈顶 D. 栈底⑤: A. 两个栈的栈顶同时到达栈空间的中心点.B. 其中一个栈的栈顶到达栈空间的中心点.C. 两个栈的栈顶在栈空间的某一位置相遇.D. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.【上海海运学院1997 二、1(5分)】【上海海运学院1999 二、1(5分)】3. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。

A. 不确定B. n-i+1C. iD. n-i【中山大学1999 一、9(1分)】4. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。

A. i-j-1B. i-jC. j-i+1D. 不确定的【武汉大学2000 二、3】5. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( )。

A. iB. n-iC. n-i+1D. 不确定【南京理工大学2001 一、1(1.5分)】6. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?()A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 34 15 6【北方交通大学2001 一、3(2分)】7. 设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。

《数据结构》习题集:第3章 栈和队列

《数据结构》习题集:第3章 栈和队列

第3章栈和队列一、选择题1.栈结构通常采用的两种存储结构是(A )。

A、顺序存储结构和链表存储结构B、散列和索引方式C、链表存储结构和数组D、线性链表结构和非线性存储结构2.设栈ST 用顺序存储结构表示,则栈ST 为空的条件是( B )A、ST.top-ST.base<>0B、ST.top-ST.base==0C、ST.top-ST.base<>nD、ST.top-ST.base==n3.向一个栈顶指针为HS 的链栈中插入一个s 结点时,则执行( C )A、HS->next=s;B、s->next=HS->next;HS->next=s;C、s->next=HS;HS=s;D、s->next=HS;HS=HS->next;4.从一个栈顶指针为HS 的链栈中删除一个结点,用x 保存被删除结点的值,则执行( C)A 、x=HS;HS=HS->next;B 、HS=HS->next;x=HS->data;C 、x=HS->data;HS=HS->next;D 、s->next=Hs;Hs=HS->next;5.表达式a*(b+c)-d 的后缀表达式为( B )A、abcdd+-B、abc+*d-C、abc*+d-D、-+*abcd6.中缀表达式A-(B+C/D)*E 的后缀形式是( D )A、AB-C+D/E*B、ABC+D/E*C、ABCD/E*+-D、ABCD/+E*-7.一个队列的入列序列是1,2,3,4,则队列的输出序列是( B )A、4,3,2,1B、1,2,3,4C、1,4,3,2D、3,2,4,18.循环队列SQ 采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front 和rear,则判定此循环队列为空的条件是()A、Q.rear-Q.front==nB、Q.rear-Q.front-1==nC、Q.front==Q.rearD、Q.front==Q.rear+19.循环队列SQ 采用数组空间SQ.base[0,n-1]存放其元素值,已知其头尾指针分别是front 和rear,则判定此循环队列为满的条件是()A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==(Q.rear+1)%nD、Q.front!=(Q.rear+1)%n10.若在一个大小为6 的数组上实现循环队列,且当前rear 和front 的值分别为0 和3,当从队列中删除一个元素,再加入两个元素后,rear 和front 的值分别为()A、1,5B、2, 4C、4,2D、5,111.用单链表表示的链式队列的队头在链表的()位置A、链头B、链尾C、链中12.判定一个链队列Q(最多元素为n 个)为空的条件是()A、Q.front==Q.rearB、Q.front!=Q.rearC、Q.front==(Q.rear+1)%nD、Q.front!=(Q.rear+1)%n13.在链队列Q 中,插入s 所指结点需顺序执行的指令是()A 、Q.front->next=s;f=s;B 、Q.rear->next=s;Q.rear=s;C 、s->next=Q.rear;Q.rear=s;D 、s->next=Q.front;Q.front=s;14.在一个链队列Q 中,删除一个结点需要执行的指令是()A、Q.rear=Q.front->next;B、Q.rear->next=Q.rear->next->next;C、Q.front->next=Q.front->next->next;D、Q.front=Q.rear->next;15.用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()A、仅修改队头指针B、仅修改队尾指针C、队头尾指针都要修改D、队头尾指针都可能要修改。

数据结构习题第3章

数据结构习题第3章

第3章栈和队列一、选择题1. 栈中元素的进出原则是( )A.先进先出B.后进先出C.栈空则进D.栈满则出2. 已知一个栈的进栈序列为1, 2, …, n,其输出序列是p1, p2, … , p n ,若p1=n,则p i=()A. iB. n-iC. n-i+1D.不确定3. 一个栈的输入序列为:a b c d e,则下列不可能是栈的输出序列的是()。

A. b c d a eB. e d a c bC. b c a d eD. a e d c b4. 判定一个栈ST(最多元素为m0)为空的条件是( )A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m0 5. 判定一个队列QU(最多元素为m0)为满队列的条件是( )A.QU->rear -QU->front = = m0 B.QU->rear -QU->front -1= = m0 C.QU->front = = QU->rear D.QU->front = = QU->rear+16.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为( )A. r-fB.(n+f-r)% nC.n+r-fD.(n+r-f)% n7. 栈和队列的共同点是()。

A. 都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点8. 用单链表表示的链式队列的队头在链表的()位置。

A.表头B.表尾C.中间9. 设计一个判别表达式中左,右括号是否配对出现的算法,采用()结构最佳。

A.线性表的顺序存储结构 B. 队列C. 线性表的链式存储结构D. 栈10. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时( )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(02)1. 一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是___。

A. edcbaB. decbaC. dceabD. abcde2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为__。

A. i B. n=i C. n-i+1 D. 不确定3. 栈结构通常采用的两种存储结构是__。

A. 顺序存储结构和链式存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构4. 判定一个顺序栈ST(最多元素为m0)为空的条件是_ ___。

A. top !=0B. top= =0C. top !=m0D. top= =m0-15. PUSH 和 POP 命令常用于()操作。

A 队列 B 数组 C 栈 D 记录6. 从一个栈顶指针为HS的链栈中删除一个结点时,用x保存被删结点的值,则执行_ _ __。

(不带空的头结点) A. x=HS; HS= HS—>next; B. x=HS—>data;C. HS= HS—>next; x=HS—>data;D. x=HS—>data; HS= HS—>next;7. 一个队列的数据入队序列是1,2,3,4,则队列出队时的输出序列是___ 。

A. 4,3,2,1B. 1,2,3,4C. 1,4,3,2D. 3,2,4,18 在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( )。

A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;1.对于一个以顺序实现的循环队列Q[0…M-1],队首、队尾指针分别为f和r,队列判空的条件是2.向一个栈顶指针为HS的链栈中插入一个s所指结点时,则执行__ __。

(不带空的头结点)3. int Prime(int n){int i=1;int x=(int) sqrt(n);while (++i<=x)if (n%i==0) break;if (i>x) return 1;else return 0;}(1)指出该算法的功能;(2)该算法的时间复杂度是多少?(04)1、一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是_______A、edcbaB、decbaC、dceabD、abcde2、向一个栈顶指针为HS的链栈中插入一个s所指结点时,则执行______。

A、HS->next=s ;B、s->next=HS->next; HS->next=s;C、s->next=HS;HS=s; C、s->next=HS;HS= HS->next;3、一个队列的入队序列是1,2,3,4,则队列的输出序列是______。

A、4,3,2,1B、1,2,3,4C、1,4,3,2D、3,2,4,14、最不适合用作链队的链表是_____。

A、只带队头指针的非循环双链表B、只带队头指针的循环双链表C、只带队尾指针的循环双链表D、只带队尾指针的循环单链表1、若用不带头结点的单链表来表示链栈S,则创建一个空栈所要执行的操作是______。

2、从循环队列中删除一个元素时,通常的操作是_____。

3、在具有n个单元的循环队列(共有MaxSize个元素)中,队满时共有_____个元素。

三、算法设计题 1、编写一个算法,利用队列的基本运算返回指定队列中的最后一个元素一、(05)选择题1.元素a、b、c和d依次入栈后,则栈顶元素为()A、aB、bC、cD、d2、一个队列的入队顺序是abcd,则出对顺序是()A、abcdB、dcbaC、abdcD、dbac3、判断一个顺序栈S为空的条件是()A、S->top=-1B、S->top=STACKSIZE-1C、S->top!=1D、S->top!=STACKSIZE4、假设循环队列Q的对头指针为front,队尾指针为rear,则判断队列空的条件是()A、Q->front+1==Q.rearB、Q->rear+1==Q->frontC、Q->front==Q->rearD、Q->front==05、设循环队列的结构是const int MaxSize = 100;typedef int DataType;typedef struct {DataType data[MaxSize];int front, rear;} Queue;若有一个Queue类型的队列Q,则应用( )表达式计算队列元素的个数。

A. (Q.rear-Q.front+MaxSize) % MaxSize;B.Q.rear-Q.front+1;C. Q.rear-Q.front-1;D. Q.rear-Qfront;二、填空题 1.通常元素进栈的操作是_________,元素退栈的操作是___________。

2.从循环队列中删除一个元素时,通常的操作是________;插入一个元素时,通常的操作是___________。

3.栈和队列的区别仅在于__________。

三、程序题 1.下列算法的功能是______void Demol(SeqStack * S){int i;arr[64];n=0;while(StackEmpty(S))arr[n++]=Pop(s);for(i=o;i<n;i++)Push(S,arr[i]);}2.下列算法的功能是_______SeqStack S1,S2,tmp;DataType x;while(!StackEmpty(&S1)){x=Pop(&S1);Push(&tmp,x);}while(!StackEmpty(&tmp)){x=Pop(&tmp);Push(&S1,x);Push(&S2,x);}(09) 1.栈中存取数据的原则() A、先进先出 B、先进后出 C、后进后出 D、随意进出2.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是()A、edcbaB、decbaC、dceabD、abcde3.判断一个栈ST(最多元素m0)为满的条件是()A、ST->top!=0B、ST->top==0C、ST->top!=m0D、ST->top==m04.循环队列用数组存放其元素值A[0,m-1],已知其头尾指针分别是rear和front,则当前队列的元素个数是()A、(rear-front+m)%mB、rear-front+1C、rear-front-1D、rear-front1、设长度为n的链队列用单循环链表表示,若只设头指针,则入队和出队操作的时间复杂度分别为()和();若又设尾指针,则入队和出队操作的时间复杂度分别为()和()。

2、线性表、栈和队列均是()结构,可以在线性表的()位置上插入和删除元素;对于栈只能在()插入和和在()位置上删除元素;对于队列只能在()位置上插入元素和在()位置上删除元素。

算法设计题:回文是指正读反读均相同的字符序列,如"abba"和"abdba"均是回文,但"good"不是回文。

试写一个算法判定给定的字符向量是否为回文。

(10)1.若已知一个栈的进栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,...,pn,若p1=3,则p2为( )。

A 可能是2 B 一定是2 C 可能是1 D 一定是12. 递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。

A.队列 B.多维数组 C.栈 D. 线性表3. 栈和队列的共同点是()。

A. 都是先进先出 B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点4. 一个栈的输入序列为1 2 3 4 5则下列序列中不可能是栈的输出序列的是( )。

A.2 3 4 1 5B. 5 4 1 3 2C. 2 3 1 4 5D. 1 5 4 3 21.对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。

()2.栈和链表是两种不同的数据结构。

()3.栈和队列的存储方式既可是顺序方式,也可是链接方式()三丶填空1. 已知链队列的头尾指针分别是f和r,则将值x入队的操作序列是_______。

四丶程序题1. 假设以I和O分别表示入栈和出栈操作。

栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。

(1)下面所示的序列中哪些是合法的?A. IOIIOIOOB. IOOIOIIOC. IIIOIOIOD. IIIOOIOO(2)通过对(1)的分析,写出一个算法,判定所给的操作序列是否合法。

若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。

(11) 1. 线性表、栈和队列都是______结构可以在线性表的_____ 位置插入和删除元素对于栈只能在 ____ 插入和删除元素对于队列只能在 _____ 插入和_____ 删除元素。

2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为 _____ 。

不允许插入和删除运算的一端称为_______二、阅读理解1.写出下列程序段的输出结果(栈的元素类型SElem Type为char)。

void main( ){Stack S;Char x,y;InitStack(S);x=’c’;y=’k’;Push(S,x); Push(S,’a’); Push(S,y);Pop(S,x); Push(S,’t’); Push(S,x);Pop(S,x);Push(S,’s’); while(!StackEmpty(S)){ Pop(S,y);printf(y); };Printf(x);}2. 简述以下算法的功能(栈和队列的元素类型均为int)。

void algo3(Queue &Q){Stack S; int d;InitStack(S);while(!QueueEmpty(Q)){DeQueue (Q,d); Push(S,d);};while(!StackEmpty(S)){Pop(S,d); EnQueue (Q,d);}}(13)(1)若已知一个栈的进栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,...,pn,若p1=3,则p2为( )。

A 可能是2 B 一定是2 C 可能是1 D 一定是1 (2)执行完下列语句段后,i值为:()int f(int x){ return ((x>0) ? x* f(x-1):2);}int i ;i =f(f(1));A.2 B. 4 C. 8 D. 无限递归(3)栈和队列的共同点是()。

相关文档
最新文档