数据结构习题之选择题
栈和队列的共同特点是( A )。
A.只允许在端点处插入和删除元素
B.都是先进后出
C.都是先进先出
D.没有共同点
用链接方式存储的队列,在进行插入运算时( D ).
A. 仅修改头指针
B. 头、尾指针都要修改
C. 仅修改尾指针
D.头、尾指针可能都要修改(尾插和头插)
以下数据结构中哪一个是非线性结构?( D )
A. 队列
B. 栈
C. 线性表
D. 二叉树(树结构)
设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。C
A.688
B.678
C.692
D.696
树最适合用来表示( C )。
A.有序数据元素
B.无序数据元素
C.元素之间具有分支层次关系的数据
D.元素之间无联系的数据
二叉树的第k层的结点数最多为( D ).
A.2k-1
B.2K+1
C.2K-1
D. 2k-1
若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( D )
A. 1,2,3
B. 9,5,2,3
C. 9,5,3
D. 9,4,2,3
对n个记录的文件进行快速排序,所需要的辅助存储空间大致为(C)时间复杂度为n^2
A. O(1)
B. O(n)
C. O(1og2n)
D. O(n2)
对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K %9作为散列函数,则散列地址为1的元素有( D )个,
A.1
B.2
C.3
D.4
设有6个结点的无向图,该图至少应有( A )条边才能确保是一个连通图。
A.5
B.6
C.7
D.8
从逻辑上可以把数据结构分为( C )两大类。
A.动态结构、静态结构 B.顺序结构、链式结构
C.线性结构、非线性结构 D.初等结构、构造型结构
在下面的程序段中,对x的赋值语句的频度为( C )。
For(k=1;k<=n;k++)
For(j=1;j<=n;j++)
x=x+1;
n)
A.O(2n) B.O(n) C.O(n2) D.O(log)
采用顺序存储结构表示数据时,相邻的数据元素的存储地址( A )。
A.一定连续 B.一定不连续
C.不一定连续 D.部分连续、部分不连续
下面关于算法的说法,正确的是( D )。
A.算法的时间复杂度一般与算法的空间复杂度成正比
B.解决某问题的算法可能有多种,但肯定采用相同的数据结构
C.算法的可行性是指算法的指令不能有二义性
D.同一个算法,实现语言的级别越高,执行效率就越低
在发生非法操作时,算法能够作出适当处理的特性称为( B )。
A.正确性 B.健壮性 C.可读性 D.可移植性
线性表是( A )。
A.一个有限序列,可以为空 B.一个有限序列,不能为空
C.一个无限序列,可以为空 D.一个无限序列,不能为空
对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的( A )个元素。
A.n/2 B.(n+1)/2 C.(n-1)/2 D.n
线性表采用链式存储时,其地址( D )。
A.必须是连续的 B.部分地址必须是连续的
C.一定是不连续的 D.连续与否均可以
用链表表示线性表的优点是( C )。
A.便于随机存取 B.花费的存储空间较顺序存储少
C.便于插入和删除 D.数据元素的物理顺序与逻辑顺序相同
链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( C )存储方式最节省运算时间。
A.单链表 B.双链表 C.单循环链表 D.带头结点的双向循环链表
下面关于线性表的叙述,错误的是( B )。
A.线性表采用顺序存储,必须占用一片地址连续的单元
B.线性表采用顺序存储,便于进行插入和删除操作
C.线性表采用链式存储,不必占用一片地址连续的单元
D.线性表采用链式存储,不便于进行插入和删除操作
单链表中,增加一个头结点的目的是为了( C )。
A.使单链表至少有一个结点 B.标识表结点中首结点的位置
C.方便运算的实现 D.说明单链表是线性表的链式存储
在单链表指针为p的结点之后插入指针为s结点,正确的操作是( B )。
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;
在双向链表存储结构中,删除p所指的结点时须修改指针( A )。
A.(p-> prior)-> next = p->next ; (p->next)->prior =p-> prior ;
B.p-> prior=(p-> prior)-> prior ; (p-> prior)-> next =p ;
C.(p->next)->prior =p ; p->rlink=(p-> next)-> next ;
D.p->next =(p-> prior)-> prior ; p-> prior =(p-> next)-> next
完成在双向循环链表结点p之后插入s的操作是( D )。
A.p->next =s; s-> prior =p; p-> next-> prior =s; s-> next =p-> next;
B.p->next-> prior =s; p-> next =s; s-> prior =p; s-> next =p-> next;
C.s-> prior =p; s-> next = p->next; p-> next =s; p-> next-> prior =s;
D.s-> prior =p; s-> next = p->next; p-> next-> prior =s;p-> next =s;
若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用( B )存储方式最节省运算时间。
A.单链表 B.顺序表 C.双向链表 D.单循环链表
12. 若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
A.单链表 B.仅有头指针的单循环链表
C.双向链表 D.仅有尾指针的单循环链表
向一个栈顶指针为top的链栈中插入一个p所指结点时,其操作步骤为( C )。
A.top->next=p; B.p->next=top->next;top->next=p;
C.p->next=top;top=p; D.p->next=top;top=top->next;
对于栈操作数据的原则是( B )。
A.先进先出 B.后进先出
C.后进后出 D.不分顺序
表达式a *(b-c)+d的后缀表达式是( B )。
A.abcd*-+ B.abc-*d+
C.abc*-d+ D.+-*abcd
采用顺序存储的两个栈的共享空间S[1..m],用top[i]代表第i个栈(i=1,2)的栈顶,栈1的底在S[1],栈2的底在S[m],则栈满的条件是( B )。
A.top[2]-top[1]=0 B.top[1]+1= top[2]
C.top[1]+top[2] =m D.top[1]= top[2]
一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( C )。
A.edcba B.decba C.dceab D.abcde
在一个链队列中,若f、r分别为队首、队尾指针,则插入p所指结点的操作为( B )。
A.f->next=p;f=p B.r->next=p;r=p
C.p->next=r;r=p D.p->next=f;f=p
用不带头结点的单链表存储队列时,在进行删除运算时( D )。
A.仅修改头指针 B.仅修改尾指针
C.头、尾指针都要修改 D.头、尾指针可能都要修改
递归过程或函数调用时,处理参数及返回地址,要用一种称为( C )的数据结构。
A.队列 B.静态链表 C.栈 D.顺序表
栈和队都是( C )。
A.顺序存储的线性结构 B.链式存储的非线性结构
C.限制存取点的线性结构 D.限制存取点的非线性结构
下面关于串的叙述,错误的是( C )。
A.串是字符的有限序列
B.串既可以采用顺序存储,也可以采用链式存储
C.空串是由空格构成的串
D.模式匹配是串的一种重要运算
串的长度是指( B )。
A.串中所含不同字母的个数 B.串中所含字符的个数
C.串中所含不同字符的个数 D.串中所含非空格字符的个数
下列说法正确的是( C )。
A.二叉树中任何一个结点的度都为2 B.二叉树的度为2
C.一棵二叉树的度可小于2 D.任何一棵二叉树中至少有一个结点的度为2
以二叉链表作为二叉树的存储结构,在具有n个结点的二叉链表中(n>0),空链域的个数为( C )。
A.2n-1 B.n-1 C.n+l D.2n+l
线索化二叉树中,某结点*p没有孩子的充要条件是( B )。
A. p->lchild=NULL
B. p->ltag=1且p->rtag=1
C. p->ltag=0
D. p->lchild=NULL且p->ltag=1
如果结点A有3个兄弟,而且B是A的双亲,则B的度是( B )。
A.3 B.4 C.5 D.1
某二叉树T有n个结点,设按某种顺序对T中的每个结点进行编号,编号值为1,2,…,n,且有如下性质:T中任意结点v,其编号等于左子树上的最小编号减1,而v的右子树的结点中,其最小编号等于v左子树上结点的最大编号加1,这是按( B )编号的。
A. 中序遍历序列
B. 先序遍历序列
C. 后序遍历序列
D. 层次顺序
设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,B中右指针域为空的结点有( C )个。
A.n-1 B.n C.n+l D.n+2
一棵完全二叉树上有1001个结点,其中叶子结点的个数是( C )。
A.500 B.501 C.490 D.495
任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序( A )。
A. 不发生改变
B. 发生改变
C. 不能确定
D. 以上都不对
若一棵二叉树的后序遍历序列为dabec,中序遍历序列为debac,则先序遍历序列为( D )。
A. cbed
B. decab
C. deabc
D. cedba
若一棵二叉树的先序遍历序列为abdgcefh,中序遍历的序列为dgbaechf,则后序遍历的结果为( D )。
A. gcefha
B. gdbecfha
C. bdgaechf
D. gdbehfca
一棵非空二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( B )。
A. 所有的结点均无左孩子
B. 所有的结点均无右孩子
C. 只有一个叶子结点
D. 是一棵满二叉树
设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为( B )。
A. 2h
B. 2h-1
C. 2h+1
D. h+1
一个具有567个结点的二叉树的高h为( D )。
A. 9
B. 10
C. 9~566之间
D. 10~567之间