for(j=1;j<=n;j++)
x++;
其中n为正整数,则语句x++执行了()次。
A.n2B.n3C.3nD.2n
16.下面关于算法的描述不正确的是()
A.算法的空间性能描述的是算法需要的存储量
B.在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法
C.算法的易读性是指算法应易于阅读和理解
D.同一个算法,实现语言的级别越高,执行效率就越低
17.从逻辑上可以把数据结构分为( )两大类。
A.初等结构、构造型结构B.顺序结构、链式结构
C.线性结构、非线性结构D.动态结构、静态结构
*****************************第2章**************************************
18.在单链表中,存储每个结点需要有两个域,一个是数据域,另一个是指针域,指针域指向该结点的(B)
A.直接前趋B.直接后继C.开始结点D.终端结点
19.将两个各有n个元素的有序表合并成一个有序表,其最少的比较次数为(A)
A.nB.2n-1C.2nD.n2
20.线性表的顺序存储结构是一种(A)的存储结构,线性表的链接存储结构是一种(B)的存储结构。
A.随机存取B.顺序存取C.索引存取D.散列存取
21.线性表采用链接存储时,其地址()。
A.必须是连续的B.部分地址必须是连续的.
C.一定是不连续的D.连续与否均可以
22.循环单链表的主要优点是(B)。
A.不再需要头指针了
B.从表中任一结点出发都能扫描到整个链表
c.已知某个结点的位置后,能够容易找到它的直接前趋
D.在进行插入、删除操作时,能更好地保证链表不断开
23.链表不具有的特点是(A)。
A.可随机访问任一元素B.插入、删除不需要移动元素
C.不必事先估计存储空间D.所需空间与线性表长度成正比
24.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋,则采用(A)存储方法最节省时间
A.顺序表B.单链表C.双链表D.单循环链表
25.若线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用(D)存储方法最节省时间。
A.单链表B.带头指针的单循环链表
C.双链表D.带尾指针的单循环链表
26.若链表中最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用(B)存储方法最节省运算时间。
A.单链表B.循环双链表
C.单循环链表D.带尾指针的单循环链表
27.在具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B)。
A.0
(1)B.O(n)C.O(n2)D.O(nlog2n)
28.对于n个元素组成的线性表,建立一个有序单链表的时间复杂度是(C)。
A.0
(1)B.O(n)C.O(n2)D.O(nlog2n)
29.使用双链表存储线性表,其优点是可以(B)。
A.提高检索速度B.更方便数据的插入和删除
C.节约存储空间D.很快回收存储空间
30.在一个单链表中,已知q所指结点是p所指结点的直接前驱,若在q和p之间插入s所指结点,则执行(B)操作。
A.s->next=p->next;p->next=s;
B.q->next=s;s->next=p;
C.p->next=s->next;s->next=p;
D.p->next=s;s->next=q;
31.带头结点的单链表head为空的判定条件是(B)
A.head=NULLB.head->next=NULL
C.head->next=headD.head!
=NULL
32.在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行(B)操作与链表的长度有关。
A.删除单链表中的第1个元素B.删除单链表的最后一个元素
C.在单链表的第一个元素前插入一个新元素D.在单链表的最后一个元素后插入一个新元素
33.设线性表有n个元素,以下算法中,(A)在顺序表上实现比在链表上实现效率更高。
A.输出第i(0≤i≤n—1)个元素值
B.交换第0个元素与第1个元素的值
C.顺序输出这n个元素的值
D.输出与给定值x相等的元素在线性表中的序号
34.设线性表中有2n个元素,算法(A),在单链表上实现要比在顺序表上实现效率更高。
A.删除所有值为x的元素
B.在最后一个元素的后面插入一个新元素
C.顺序输出前k个元素
D.交换第i个元素和第2n-i-1个元素的值(i=O,1,…,n-1)
35.与单链表相比,双链表的优点之一是(D)。
A.插入、删除操作更简单B.可以进行随机访问
C.可以省略表头指针或表尾指针D.顺序访问相邻结点更灵活
36.线性结构是n个()的有限序列(n≥0)。
A.表元素B.字符C.结点D.数据项
37.下列关于线性结构的说法不正确的是()。
A.线性结构的特点是每个元素都有一个前驱和一个后继
B.在线性结构中,结点间的逻辑关系是1对1的
C.线性结构中的一个结点代表一个数据元素
D.同一个线性结构中的所有结点所代表的数据元素具有相同的特性
38.下列序列属于线性表的是()。
A.(1,2,3,…)B.(1,a+1,2,b+2,3,c+3)C.(1,2,3,…,100)D.{a,b,c,…,z}
39.下述哪一条是顺序表的优点?
()。
A.存储密度大B.插入运算方便C.删除运算方便D.可用于各种逻辑结构的存储表示
40.下面关于线性表的叙述中不正确的是()。
A.线性表采用顺序存储,必须占用一片连续的存储单元
B.线性表采用顺序存储,便于进行插入和删除操作
C.线性表采用链接存储,不必占用一片连续的存储单元
D.线性表采用链接存储,便于插入和删除操作
41.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间。
A.单链表B.单循环链表C.带尾指针的单循环链表D.带头结点的双循环链表
42.若长度为n的线性表采用顺序存储结构,在其第i(1<=i<=n+1)个位置插入一个新结点X的算法的时间复杂度为()。
A.O(0)B.O
(1)C.O(n)D.O(n2)
43.若长度为n的线性表采用链式存储结构,则访问第i个元素的算法的时间复杂度为()。
A.O(0)B.O
(1)C.O(n)D.O(n2)
44.在一个以head为头指针的非空循环单链表中,尾结点指针p满足()。
A.p→next=headB.p→next=NULLC.p=NULLD.p=head
45.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()。
A.head==NULLB.head→next==NULLC.head→next==headD.head!
=NULL
46.在单链表指针为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;
47.线性表采用链式存储时,其元素地址( )。
A.必须是连续的B.一定是不连续的
C.部分地址是连续的D.连续与否均可
******************************第3章************************************
48.栈的特点是(A),队列的特点是(B)
A.先进后出B.先进先出C.既能先进先出,也能先进后出
49.栈和队列共同具有的特点是(C)
A.都是先进后出B.都是先进先出
C.只允许在端点进行操作运算D.既能先进先出,也能先进后出
50.若用一个有6个单元的数组来实现循环队列,rear和front的初值分别为0和3。
则从队列中删除一个元素,再添加两个元素后,rear和front的值分别为(C)
A.1和5B.2和4C.4和2D.5和1
51.若一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是(D)。
A.不确定B.n—iC.n—i一1D.n—i+1
52.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是(C)。
A.6B.4C.3D.2
53.一个栈的人栈序列是1,2,3,4,5,则栈的不可能的输出序列是(C)。
A.54321B.45321C.43512D.12345
54.一个队列的入队顺序是1,2,3,4,则队列的输出顺序是(B)。
A.4321B.1234C.1432D.3241
55.栈和队的主要区别在于(D)。
A.它们的逻辑结构不一样B.它们的存储结构不一样
C.所包含的运算不一样D.插人、删除运算的限定不一样
56.如果以链表作为栈的存储结构,则退栈操作时()。
A.必须判别栈是否满B.判别栈元素的类型
c.必须判别栈是否空D.对栈不作任何判别
57.设C语言数组Data[m+1)作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为()。
A.front=front+1B.front=(front+1)%m
C.rear=(rear+1)%mD.front=(front+1)%(m十1)
58.数组A[0..5][0..5]的每个元素占5个字节,将其以列为主序存储在起始地址为1000的内存单元中,则元素A[5][5]的地址是()
A.1175B.1180C.1205D.1210
59.将数组称为随机存取结构是因为(B)。
A.数组元素是随机的B.对数组任一元素的存取时间是相等的
C.随时可以对数组进行访问D.数组的存储结构是不定的
60.对特殊矩阵采用压缩存储的目的主要是为了(D)。
A.表达变得简单B.对矩阵元素的存取变得简单
C.去掉矩阵中的多余元素D.减少不必要的存储空间
61.下面(C)不属于特殊矩阵。
A.对角矩阵B.三角矩阵C.稀疏矩阵D.对称矩阵
62.向一个栈顶指针为head的链栈中插入一个指针s所指结点时,则执行(D)。
A.head->next=s;B.s->next=head->next;head->next=s;
C.s->next=head;head=s;D.s->next=head;head=head->next;
63.设用数组Data[0..m-1)作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则当前队列中的元素个数是(A)。
A.(rear-front+m)%mB.rear-front+1
C.rear-front-1D.rear-front
64.用单链表存储一个栈时,栈顶指针在链表的(A)位置。
A.链头B.链尾C.链心D.链的任何位置
65.用单链表存储一个队列时,对头指针在链表的(B)位置。
A.链头B.链尾C.链心D.链的任何位置
66.栈修改的原则是( )。
A.先进先出B.后进先出C.后进后出D.不分顺序
67.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。
A.不确定B.n-i+1C.iD.n-i
68.设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。
A.1,2,4,3B.2,1,3,4C.1,4,3,2 D.4,3,1,2
69.假设用一维数组sq(1:
n)表示一个栈,空栈时栈顶指针top为n+1,则下面x进栈的正确操作是()。
A.top=top+1;sq[top]=xB.sq[top]=x;top=top+1
C.top=top-1;sq[top]=xD.sq[top]=x;top=top-1
70.如果我们用数组A[1:
100]来实现一个大小为100的栈,并且用变量top来指示栈顶,top的初值为0,表示栈空。
请问在top为100时,再进行入栈操作,会产生()
A.正常动作B.溢出C.下溢D.同步
71.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。
A.(rear-front+m)%mB.rear-front+1
C.(front-rear+m)%mD.(rear-front)%m
72.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。
A.(rear+1)%n==frontB.rear==front
C.rear+1==frontD.(rear-l)%n==front
73.最大容量为n的循环队列,队尾指针是rear,队头是front,则队满的条件是()。
A.(rear+1)%n==frontB.rear==front
C.rear+1==frontD.(rear-l)%n==front
74.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是()。
A.6B.4C.3D.2
75.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?
()
A.1和5B.2和4C.4和2D.5和1
76.一个n*n的对称矩阵,如果以行或列为主序放入内存,则其容量为( )
A.n*nB.n*n/2C.(n+1)*n/2D.(n+1)*(n+1)/2
77.数组A中,每个元素的长度为3个字节,行下标I从1到8,列下标J从1到10,从首地址SA开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为( )
A.SA+141 B.SA+144 C.SA+222 D.SA+225
*************************第4章*******************************
78.含有n个结点的二叉树采用二叉链表存储时,空指针域的个数为(C)
A.n一1B.nC.n+1D.n+2
79.在一棵深度为h的完全二叉树中,所含结点的个数不少于(B)
A.2h-1-1B.2h-1C.2h-1D.2h
80.如果结点A有3个兄弟,B是A的双亲,则B的度是(D)。
A.1B.2C.3D.4
81.设二叉树有n个结点,则其深度为(D)。
A.n一1B.nC.
D.不能确定
82.二叉树的前序序列和后序序列正好相反,则该二叉树一定是(B)的二叉树。
A.空或只有一个结点D.高度等于其结点数
C.任一结点无左孩子D.任一结点无右孩子
83.深度为k的完全二叉树至少有(B)个结点,至多有(C)个结点。
A.2k-2+1B.2k-1C.2k-1D.2k-1-1
84.一个高度为h的满二叉树共有n个结点,其中有m个叶子结点,则有(D)成立。
A.n=h+mB.h+m=2nC.m=h-1D.n=2m一1
85.任何一棵二叉树的叶子结点在前序、中序、后序遍历序列中的相对次序(A)。
A.肯定不发生改变B.肯定发生改变C.不能确定D.有时发生变化
86.如果T'是由有序树T转换而来的二叉树,那么T中结点的前序序列就是T'中结点的(A)序列,T中结点的后序序列就是T'中结点的(B)序列。
a)A.前序B.中序C.后序D.层序
87.设森林中有4棵树,树中结点的个数依次为n1,n2,n3,n4,则把森林转换成二叉树后,其根结点的右子树上有(D)个结点。
根结点的左子树上有(A)个结点。
A.n1—1B.nlC.nl+n2+n3D.n2+n3+n4
88.讨论树、森林和二叉树的关系,目的是为了(B)。
A.借助二叉树上的运算方法去实现对树的一些运算
B.将树、森林按二叉树的存储方式进行存储并利用二叉树的算法解决树的有关问题
C.将树、森林转换成二叉树
D.体现一种技巧,没有什么实际意义
89.二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面,这种说法(A)。
A.正确B.错误
90.由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法(B)
A.正确B.错误
91.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为()
A.2hB.2h-1C.2h+lD.h+1
92.按照二叉树的定义,具有3个结点的二叉树有(C)种。
A.3B.4C.5D.6
93.深度为5的二叉树至多有(C)个结点。
A.16B.32C.31D.10
94.在一非空二叉树的中序遍历序列中,根结点的右边(A)。
A.只有右子树上的所有结点B.只有右子树上的部分结点
C.只有左子树上的部分结点D.只有左子树上的所有结点
95.对一个满二叉树,m个树叶,n个结点,深度为h,则(D)。
A.n=h+mB.h+m=2nC.m=h-1D.n=2h—1
96.设n,m为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是()
A.n在m的右子树上B.n是m祖先C.n在m左子树上D.n是m子孙
设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1则T中的叶子数为()
A.5B.6C.7D.8
97.在树中,互为堂兄弟的结点拥有相同的()。
A、双亲B、祖先C、路径D、孩子
98.树最适合用()来表示。
A、有序数据元素B、无序数据元素
C、元素之间具有分支层次关系的数据D、元素之间无联系的数据
99.一棵二叉树具有10个度为2的结点,则该二叉树的叶子结点个数是()。
A.9B.11C.12D.不确定
100.按二叉树的定义,具有3个结点的二叉树有()种。
A、3B、4C、5D、6
101.若要利用二叉树的算法来实现树的操作,应选择树的()存储结构。
A、双亲表示法B、孩子链表表示法
C、双亲孩子表示法D、孩子兄弟链表表示法
102.二叉树的第I层上最多含有结点数为()
A.2IB.2I-1-1C.2I-1D.2I-1
103.在具有n个结点的完全二叉树中,编号为i的结点(2i>n)的左孩子结点的编号是()。
A.iB.2i+1C.2i-1D.不存在
104.在下述结论中,正确的是()
①只有一个结点的二叉树的度为0;
②二叉树的度为2;
③二叉树的左右子树可任意交换;
④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A、①②③B、②③④C、②④D、①④
105.利用二叉链表存储树时,根结点的右指针是()
A、指向最左孩子B、指向最右孩子C、空D、非空
106.对于前序遍历与中序遍历结果相同的二叉树为()
A.一般二叉树B.所有结点只有左子数的二叉树
C.根结点无左孩子的二叉树D.所有结点只有右子树的二叉树
107.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉