中国石油大学线性表栈队列测试题

合集下载

中国石油大学大数据结构精彩试题及问题详解

中国石油大学大数据结构精彩试题及问题详解

数据结构试题一、单选题1、在数据结构的讨论中把数据结构从逻辑上分为()A 内部结构与外部结构B 静态结构与动态结构C 线性结构与非线性结构D 紧凑结构与非紧凑结构。

2、采用线性链表表示一个向量时,要求占用的存储空间地址()A 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 可连续可不连续3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为()。

A nB n/2C (n-1)/2D (n+1)/24、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行()。

A s→link = p→link;p→link = s;B p→link = s; s→link = q;C p→link = s→link;s→link = p;D q→link = s;s→link = p;5、如果想在4092个数据中只需要选择其中最小的5个,采用()方法最好。

A 起泡排序B 堆排序C 锦标赛排序D 快速排序6、设有两个串t和p,求p在t中首次出现的位置的运算叫做()。

A 求子串B 模式匹配C 串替换D 串连接7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。

所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是()。

A 80B 100C 240D 2708、将一个递归算法改为对应的非递归算法时,通常需要使用()。

A 栈B 队列C 循环队列D 优先队列9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为()。

10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是()。

A ( front - rear + 1) % mB ( rear - front + 1) % mC ( front - rear + m) % mD ( rear - front + m) % m11、一个数组元素a[i]与()的表示等价。

栈、队列练习题(答案)

栈、队列练习题(答案)

栈、队列练习题(答案)栈、队列练习题一、选择题1.栈和队列的共同特点是( )。

A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.若让元素1、2、3、4依次入栈,则出栈次序不可能出现()A.3 2 1 4 B.2 1 4 3 C.1 4 2 3 D.4 3 2 13.栈的插入和删除操作在( )进行。

A. 栈顶B. 栈底C. 任意位置D. 指定位置4.用单链表表示的链式队列的队头在链表的()位置。

A. 链头B. 链尾C. 链中D. 以上都不是5.在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是()。

A. p->next=s; s->prior=p;p->next->prior=s; s->next=p->next;B. s->prior=p; s->next=p->next;p->next=s; p->next->prior=s;C. p->next=s; p->next->prior=s;s->prior=p; s->next=p->next;D. s->prior=p; s->next=p->next;p->next->prior=s; p->next=s;6.设有一个栈,元素的进栈次序为A, B, C, D, E,下列是不可能的出栈序列( )。

A.A, B, C, D, E B.B, C, D, E, AC.E, A, B, C, D D.E, D, C, B, A7.在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为( )。

A.top不变B.top=0 C.top-- D.top++8.向一个栈顶指针为hs的链栈中插入一个s结点时,应执行( )。

栈和队列习题

栈和队列习题

栈和队列习题4.1 判断题(在你认为正确的题后的括号中打√,否则打X)。

(1)堆栈和队列都是特殊的线性表。

( )(2)堆栈和队列都将插入和删除操作限制在表的端点处进行。

( )(3)只允许在表的一端进行插入和删除操作的线性表称为堆栈。

( )(4)没有元素的堆栈称为空栈,空栈用不着栈顶指针。

( )(5)只要堆栈不空,就能任意删除堆栈的元素。

( )(6)堆栈允许删除的一端称为栈顶,而栈底元素是不能删除的。

( )(7)n个元素进栈的顺序一定与它们出栈的顺序相反。

( )(8)对采用链式存储结构的堆栈进行操作不必判断溢出。

( )(9)给出顺序堆栈的栈顶元素位置的指针是一个指针类型的变量。

( )(10)判断顺序堆栈是否为空的标志是top是否等于0(top为栈顶指针)。

( )(11)插入和删除操作比较简单是链接堆栈和链接队列的优点之一。

( )(12)n个元素进队的顺序与它们出队的顺序一定是相同的。

( )(13)没有任何元素的队列称为空队。

空队用不着队头指针与队尾指针。

( )(14)元素进出队列一定满足“先进先出”的规律。

( )(15)链接队列不存在溢出问题。

( )(16)在链接队列中删除一个元素是在链表的最前端进行的。

( )(17)采用循环链表作为存储结构的队列称为循环队列。

( )(18)堆栈和队列都可以用来解决递归问题。

( )(19)堆栈和队列都不适合采用散列存储方法。

( )(20)无论是顺序队列还是链接队列,插入、删除操作的时间复杂度都是O(1)。

( )4.2单项选择题。

(1)堆栈和队列的共同之处在于它们具有相同的——。

A.逻辑特性B.物理特性C.运算方法D.元素类型(2)堆栈和队列都是特殊的线性表,其特殊性在于_______。

A.它们具有一般线性表所没有的逻辑特性B.它们的存储结构比较特殊C.对它们的使用方法做了限制D.它们比一般线性表更简单(3)若5个元素的出栈序列为1,2,3,4,5,则进栈序列可能是——。

2,3-线性表、队列、栈测试题

2,3-线性表、队列、栈测试题

线性表、栈和队列测试题姓名班级学号一、选择题(共25分)( b )1、下面关于线性表的叙述中,错误的是哪一个?A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

( A )2、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表(c )3、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<=i<=n+1)。

A. O(0)B. O(1)C. O(n)D. O(n2)( b )4、在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:A.p->next=s;s->next=p->next; B.s->next=p->next;p->next=s;C.p->next=s;p->next=s->next; D.p->next=s->next;p->next=s;( b )5、对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()A.h ead==NULL B.head->next==NULLC.head->next==head D.head->NULL(b)6. 栈中元素的进出原则是A.先进先出 B.后进先出 C 栈空则进 D 栈满则出(c)7. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为A.i B.n=i C.n-i+1 D.不确定(b)8. 判定一个栈ST(最多元素为m0)为空的条件是A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m0(a)9. 判定一个队列QU(最多元素为m0)为满队列的条件是A.QU->rear -QU->front = = m0 B.QU->rear -QU->front -1= = m0C.QU->front = = QU->rear D.QU->front = = QU->rear+1(d)10.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为(A)r-f; (B)(n+f-r)% n; (C)n+r-f; (D)(n+r-f)% n 11. 设有4个数据元素a1、a2、a3和a4,对他们分别进行栈操作或队操作。

自测题答案

自测题答案

第3章栈和队列自测卷答案姓名班级一、填空题(每空1分,共15分)1. 向量、栈和队列都是线性结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。

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

不允许插入和删除运算的一端称为栈底。

3. 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

5. 在具有n个单元的循环队列中,队满时共有n-1 个元素。

6. 向栈中压入元素的操作是先存入元素,后移动栈顶指针。

8. 〖00年统考题〗带表头结点的空循环双向链表的长度等于0。

解:Array二、判断正误(判断下列概念的正确性,并作出简要的说明。

)(每小题1分,共10分)(×)1. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

错,线性表是逻辑结构概念,可以顺序存储或链式存储,与元素数据类型无关。

(×)2. 在表结构中最常用的是线性表,栈和队列不太常用。

错,不一定吧调用子程序或函数常用,CPU中也用队列。

(√)3. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。

(√)4. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。

正确,都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

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

错,栈是逻辑结构的概念,是特殊殊线性表,而链表是存储结构概念,二者不是同类项。

(×)6. 栈和队列是一种非线性数据结构。

错,他们都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。

(√)7. 栈和队列的存储方式既可是顺序方式,也可是链接方式。

(×)9. 队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。

错,后半句不对。

栈和队列练习题答案

栈和队列练习题答案

栈和队列(答案)1. 一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是__ C __。

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

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

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

A. top !=0B. top= =0C. top !=m0D. top= =m0-15. 判定一个顺序栈ST(最多元素为m0)为栈满的条件是__ D __。

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

A 队列B 数组C 栈D 记录7. 向一个栈顶指针为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;8. 从一个栈顶指针为HS的链栈中删除一个结点时,用x 保存被删结点的值,则执行_ B _ __。

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

第二单元(栈和队列)(答案)

第二单元(栈和队列)(答案)
{
if(s->top<MAXSIZE)
{s->d[s->top]=x;
s->top++;
}
}
int pop(Seqstack *s)/*出栈操作*/
第二单元 课后练习题
知识点范围:第3章 栈和队列
一、选择题(每小题1分,共28分)
1.栈的特点是B,简称C的线性表;队列的特点是A,简称D的线性表。
A.先进先出B.后进先出
C.LIFOD.FIFO
2.栈和队列的共同点是C。
A.都是先进后出B.都是先进先出
C.只允许在端点处插入和删除元素D.没有共同点
10.一个栈的输入序列是12345,则栈的输出序列不可能是12345。(×)
11.若以链表作为栈的存储结构,则进栈需要判断栈是否满。(×)
12.循环队列中元素个数为rear-front。(×)
四、计算题(第1小题4分,第2小题3分,第3小题4分,共11分)
铁道进行车厢调度,如下图2.2所示a,b二条铁道均为单向行驶,设有1~6编号的6节车厢,若进站的车厢序列为123456,则求解如下问题。
(1)能否得到435612和135426的出站序列?
(2)写出三种不可能的出站序列。
(3)写出2种可能的出站序列及用S表示进栈、X表示出栈的栈操作序列。
图2.2
答:
(1)可以得到135426出站序列,栈操作序列如下:
入栈车厢号:123 45 6
栈操作:SXSSXSSXXXSX
出栈车厢号:1 3 5 4 2 6
20.若一个循环队列,其最多元素个数为MAXSIZE,front为头指针,rear为尾指针,则判定满队列的条件是A。
A.(rear+1)%MAXSIZE==frontB.rear+1==front

中国石油大学数据结构试题及答案

中国石油大学数据结构试题及答案
该数组至少需要的存储字数是()。
A80B100C240D270
8、将一个递归算法改为对应的非递归算法时,通常需要使用()。
A栈B队列C循环队列D优先队列
9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为()。
10、在循环队列中用数组A[0..m-1]存放队列元素,其队头和队尾指针分别为
front和rear,则当前队列中的元素个数是()。
树中的结点数为(85)个。
15、若对一棵二叉树从0开始进行结点编号,并按此编号把它顺序存储到一维数
组中,即编号为0的结点存储到a[0]中,其余类推,则a[i]元素的左子女结点
为(2*i+1),右子女结点为(2*i+2),双亲结点(i>=1)为(「(i-1)/2
Cp->link=s->link;s->link=p;Dp->link=s; s->link=q;
20、设单链表中结点结构为(data,link).若想摘除结点*p的直接后继,则应执
行下列哪一个操作()
Ap->link=p->link->link;
Bp=p->link; p->link=p->link->link;
()。
AnBn/2C(n-1)/2D(n+1)/2
4、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点
s,则执行()。
As→link=p→link;p→link=s;
Bp→link=s;s→link=q;
Cp→link=s→link;s→link=p;
Dq→link=s;s→link=p;
Cx=top; top=top->link;Dx=top->data;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、选择题(每小题1分,共30分)
1.算法的计算量的大小称为计算的().
A.效率 B.复杂性 C. 现实性 D.难度
2.下面哪一条是顺序存储结构的优点?()
A.存储密度B.插入运算方便 C.删除运算方便D.可方便地用于各种逻辑结构的存储表示
3.下面说法错误的是()
(1)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2N)的算法
(2)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
(3)同一个算法,实现语言的级别越高,执行效率就越低
A.(1)
B.(2)
C.(3)
4.以下哪一个术语与数据的存储结构无关?()
A.单链表 B.线性表 C.顺序表 D. 双向链表
5.下面程序段FOR (i=n-1;n>=1;n--)
FOR (j=1;j<=i;j++)
If (A[j]>A[j+1])
{ t=A[j+1];
A[j+1]=A[j];
A[j]=t;} 其中n为正整数,则最后一行的语句频度在最坏情况下是( ) A. O(nlogn) B.O(n) C.O(n2) D.O(n3)
6.连续存储设计时,存储单元的地址()。

A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续
7.以下属于逻辑结构的是()。

A.顺序表 B.循环链表 C.线性表 D. 单链表
8. 若某线性表最常用的操作是存取任一指定序号的元素和在表的最后进行插入和删除运算,则利用()存储方式最节省时间。

A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表
9. 若某线性表最常用的操作是在最后一个元素之后插入一个元素和删除一个元素,则采用()存储方式最节省运算时间。

A.单链表 B.双链表 C.仅有头指针的单循环链表 D.仅有尾指针的单循环链表
10.在一个以h为头的单循环链表中,p指针指向链尾的条件是()
A.p ==NULL B.h→next==NULL C.head→next==head D.head!=NULL
11.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。

A.不确定
B. n-i+1
C. i
D. n-i
12.表达式a*(b+c)-d的后缀表达式是( )。

A.abcd*+- B. abc+*d- C. abc*+d- D. -+*abcd
13.设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。

A.线性表的顺序存储结构 B.队列 C.线性表的链式存储结构 D.栈
14.递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。

A.队列 B.多维数组 C.栈 D.线性表
15.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。

A.(rear-front+m)%m B.rear-front+1 C.(front-rear+m)%m D.(rear-front)%m
16.设栈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. 2
17.用单链表表示的链式队列的队头在链表的()位置。

A.链头 B.链尾 C.链中 D.不确定18.栈和队列的共同点是()。

A.都是先进先出
B.都是先进后出
C.只允许在端点处插入和删除元素
D.没有共同点
19.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

A. 808 B. 818 C. 1010 D. 1020
20.将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元素A6665(即该元素下标
22.循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是( )。

A. (rear-front+m)%m
B. rear-front+1
C. rear-front-1
D. rear-front
23.循环队列存储在数组A[0..m]中,则入队时()。

A. rear=rear+1
B. rear=(rear+1) %(m-1)
C. rear=(rear+1)%m
D. rear=(rear+1)%(m+1)
24.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()
A.head==NULL B.head→next==NULL C.head→next==head D.head!=NULL
25.以下属于存储结构的是()。

A.顺序表 B.树 C.线性表 D. 图
26.链表不具有的特点是() A.插入、删除不需要移动元素 B.可随机访问任一元素
C.不必事先估计存储空间 D.所需空间与线性长度成正比
27.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1)
28.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( )。

A. BA+141
B. BA+180
C. BA+222
D. BA+225
29.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

A. 808 B. 818 C. 1010 D. 1020
30.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B [1..(n(n+1))/2]中,则在B中确定a ij(i<j)的位置k的关系为( )。

A. i*(i-1)/2+j
B. j*(j-1)/2+i
C. i*(i+1)/2+j
D. j*(j+1)/2+i
二、应用题(每题4分,共40分)
1.线性表的顺序存储结构具有三个弱点:其一,在作插入或删除操作时,需移动大量元素;其二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;其三,表的容量难以扩充。

线性表的链式存储结构是否一定都能够克服上述三个弱点,试讨论之。

2.设单链表中某指针p所指结点(即p结点)的数据域为data,链指针域为next,请写出在p结点之后插入s结点的操作.
3.在循环单链表和双向循环链表中,能否从当前结点出发访问到任何一个结点?试说明原因。

4.有5个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元素C,D最先出栈(即C第一个且D
5.设一数列的输入顺序为123456,若采用栈结构,并以A和D分别表示入栈和出栈操作,试问通过入出栈操作的合法序列,能否得到输出顺序为325641,154623的序列,请说明为什么不能或如何才能得到。

6.用栈实现将中缀表达式8-(3+5)*(5-6/2)转换成后缀表达式,并画出读取到数值2时堆栈的状态。

7.特殊矩阵和稀疏矩阵哪一种压缩存储后失去随机存取的功能?为什么?
8.顺序队列一般组织成为环状队列的形式,队列为listarray[0..n-1],队列头指针为 front,队列尾指针为 rear,listarray [rear]表示下一个可以插入队列的位置,请给出队列入队、出队操作时指针的变化情况以及队列空、队列满的判断条件。

9.利用三元组存储任意稀疏数组时,在什么条件下才能节省存储空间。

10.给出循环队列中元素个数的计算式(设队最大长度为N,队首指针FRONT,队尾指针REAR)
三、算法分析与设计(每题10分,共30分)
1.给出顺序表(SeqList)数据类型的定义。

然后(1)实现顺序表的创建;(2)已知顺序表的一个操作函数int DeleteElement(int x),其功能为:删除值为x的元素,删除成功返回1,否则返回0,请实现该函数。

2.给出单链表(List)数据类型的定义。

然后(1)已知单链表的操作函数void Insert (int x, int i )的功能为:插入元素x,使其作为单链表中的第i个元素,试实现其函数。

(2)已知单链表的操作函数Find(int x)的功能是:在表中搜索数据x的结点,找到返回该节点的地址,找不到返回null。

请实现该函数。

并分析其时间复杂度。

3.利用两个线性表LA和LB分别表示两个集合A和B,试设计算法实现A=A∩B,并把结果存放在LA中。

(线性表的抽象数据类型已经实现,其操作函数可直接使用)。

相关文档
最新文档