数据结构常见题型整合
数据结构常见题型整合
1、设栈的输入序列是1,2,3,4, 则()不可能是其出栈序列。
A. 1,2,4,3,
B. 2,1,3,4,
C. 1,4,3,2,
D. 4,3,1,2,
2、在一个链队列中,若f,r分别为队首、队尾指针,则插入s所指结点的操作为( )
(A) f->next=c;f=s (B) r->next=s;r=s
(C) s->next=r;r=s (D) s->next=f;f=s
3、顺序存储的栈和队列中已经各有N个结点,要删除一个结点分别需要移动数据()
次和()次。
A. N/2 , N
B. N , N/2
C. 0 , N
D. N , 0
4、设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是( )。
A.XYZ B. YZX C. ZXY D. ZYX
5、一个递归算法必须包括()。
A. 递归部分
B. 终止条件和递归部分
C. 迭代部分
D.终止条件和迭代部分
6、如下四个选项中,那个选项是能够正确判断循环队列是否排满元素的操作(其中
MAXQSIZE表示队列的容量)():
A.if (Q.rear == Q.front) …
B.if (Q.rear == (Q.front + MAXQSIZE))
C.if (Q.rear == (Q.front + 1) % MAXQSIZE)
D.if (Q.front == (Q.rear + 1) % MAXQSIZE)
7、假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中
的元素个数为()。
A.(rear-front+m)%m B.rear-front+1
C.(front-rear+m)%m D.(rear-front)%m
8、若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从
队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( )
A. 1和5
B. 2和4
C. 4和2
D. 5和1
10、最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。
A. (rear+1) MOD n=front
B. rear=front
C.rear+1=front D. (rear-l) MOD n=front
11、栈和队列的共同点是()。
A. 都是先进先出
B. 都是先进后出
C. 只允许在端点处插入和删除元素
D. 没有共同点
1、栈是___操作受限(或限定仅在表尾进行插入和删除操作)的线性表,其运算遵循___后进先出____的原则。
2、队列的插入操作在_ 队尾__进行,删除操作在队头___进行,其特点是__先进先出__。
3、用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的S和X的操作串为___S×SS×S××__。
4、表达式求值是___栈____应用的一个典型例子。
5、栈和队列在本质上都是同一种基本数据结构的特例,这种基本的数据结构就是线性表。
6、在作进栈运算时,应先判别栈是否. 满,在作退栈运算时应先判别栈是否空。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为n 。
12、在二叉树的第I层(I≥1)上最多含有结点数为()
A. 2I
B. 2I-1-1
C. 2I-1
D. 2I -1
13、深度为6的二叉树最多有( )个结点
A.64 B.63 C.32 D.31
14、一棵树高为K的完全二叉树至少有( )个结点
A.2k–1
B.2k-1 –1
C.2k-1
D.2 k
15、有关二叉树下列说法正确的是()
A. 二叉树的度为2
B. 一棵二叉树的度可以小于2
C. 二叉树中至少有一个结点的度为2
D. 二叉树中任何一个结点的度都为2
16、n个结点的线索二叉树上含有的线索数为()
A. 2n
B. n-l
C. n+l
D. n
17、线性表和树的结构区别在于()
A.前驱数量不同,后继数量相同B.前驱数量相同,后继数量不同
C.前驱和后继的数量都相同D.前驱和后继的数量都不同
18、已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,则其前缀形式
为( )
A.-A+B*C/DE B. -A+B*CD/E C.-+*ABC/DE D. -+A*BC/DE
19、设有一表示算术表达式的二叉树(见下图),
它所表示的算术表达式是( )
A. A*B+C/(D*E)+(F-G)
B. (A*B+C)/(D*E)+(F-G)
C. (A*B+C)/(D*E+(F-G ))
D. A*B+C/D*E+F-G
20、一棵具有
n 个结点的完全二叉树的树高度(深度)(符号??x 表示取不大于x 的最大整
数)是( )
21、利用二叉链表存储树,则根结点的右指针是( )。
A .指向最左孩子
B .指向最右孩子
C .空
D .非空
22、已知一棵二叉树的前序遍历结果为ABCDEF ,中序遍历结果为CBAEDF ,则后序遍历
的结果为( )。
A .CBEFDA
B . FEDCBA
C . CBEDFA
D .不定
23、若前序遍历二叉树的结果为序列A 、B 、C ,则有_________棵不同的二叉树可以得到这一结果。
A. 3
B. 4
C. 5
D. 6
24、线索二叉树是一种( )结构。
A .逻辑
B .逻辑和存储
C .物理
D .线性
二、填空题
7、对于任意一棵二叉树,如果其叶子结点数为N0,度为1的结点数为N1,度为2的结点数为N2,则N0=___ N2 + 1_________。
8、具有256个结点的完全二叉树的深度为___9___。
9、一个深度为4的二叉树,其结点至少有 4 个,至多有 15 个:
10、深度为H 的完全二叉树至少有_ 2H-1__个结点;至多有 2H -1_个结点;H 和结点总数N 之间的关系是 H=?log 2N ?+1。
11、若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。在这种存储结构中,N个结点的二叉树共有__2N__个指针域,其中有_N-1__个指针域是存放了地址,有__N+1_____个指针是空指针。
12、设一棵赫夫曼树有6个叶子结点,权值分别为3、4、7、14、15、20,则根结点的权值
是__63____
13、对一棵完全二叉树,设一个结点的编号为i,若它的左孩子结点存在,则其编号为
2i ;若右孩子结点存在,则其编号为2i+1 ;而双亲结点的编号为??2/i。
14、赫夫曼树是带权路径长度最小的二叉树,又称最优二叉树,路径上权值较大的结点离根较近。
15、下面程序段的功能是建立二叉树的算法,请在下划线处填上正确的内容。
typedef struct node
{ int data;
struct node *lchild;_
struct node *rchild __;
} BiTNode, *BiTree;
void createBitree(BiTree &T)
{ scanf(“%c”, &ch);
if(ch=='#')T=NULL ;
else
{ T=( BiTNode *)malloc(sizeof(BiTNode));
T->data=ch;
createBitree(T->lchild);___
createBitree(T->rchild);
}
}
16、二叉树由_根结点__,__左子树_,_右子树__三个基本单元组成。
17、树的链表存储结构常用的有三种,其中,双亲表示法——以一组连续空间存储树的结点,在每个结点中设一个指示器指示双亲结点的位置。孩子表示法——每个结点的孩子以单链表的形式存储,n个结点有n个孩子链表,n个头指针又组成一个线性表,并以顺序存储结构存储。孩子兄弟表示法——以二叉链表作为树的存储结构,链表中的结点的两个指针分别指向该结点的第一个孩子结点和下一个兄弟结点。//P135-136
18、利用树的孩子兄弟表示法存储,可以将一棵树转换为__二叉树____。
19、在二叉树中,指针p所指结点为叶子结点的条件是_ p->lchild==NULL &&
p->rchlid==NULL _____。
20、树的孩子兄弟表示法和二叉树的二叉链表表示法,本质是一样的,只是解释不同,也就是说树(树是森林的特例,即森林中只有一棵树的特殊情况)可用二叉树唯一表示,并可使用二叉树的一些算法去解决树和森林中的问题。
21、树和二叉树逻辑上都是树形结构,但是二叉树不是树的特例,二叉树与树是两个不同的概念。二叉树的度至多为2,树无此限制;二叉树有左右子树之分,即使在只有一个分枝的情况下,也必须指出是左子树还是右子树,树无此限制。
三、简答题
1、已知一棵二叉树的前序遍历的结果是ABKCDFGHIJ,中序遍历的结果是KBCDAFHIGJ, 试画出这棵二叉树,并写出后序遍历结果。
答案:
当前序序列为ABKCDFGHIJ,中序序列为KBCDAFHIGJ时,逐步形成二叉树的过程如下图所示:
这棵二叉树的后序遍历结果是:K D C B I H J G F A
2、某通信电文由A、B、C、D、E、F六个字符组成,它们在电文中出现的次数(权值)分别是16,5,7,3,8,1。试画出其哈夫曼树,确定其对应的哈夫曼编码,并计算其带权路径长度。为使结果唯一,请将权值较小的结点作为其双亲的左孩子,而将权值较大的结点作为其双亲的右孩子。
答案:
哈夫曼树如下: