文档库 最新最全的文档下载
当前位置:文档库 › 数据结构习题及答案

数据结构习题及答案

数据结构习题及答案
数据结构习题及答案

第1章数据结构

一、选择题

1.算法指的是()。

A计算机程序B解决问题的计算方法

C排序方法D解决问题的有限运算序列

2.在数据的树形结构中,数据元素之间为()的关系。

A 0:0

B 1:1

C 1:n

D m:n

3.数据的存储结构包括顺序、链接、散列和()4种基本类型。

A索引B数组C集合D向量

4.一个数组元素a[i]与()的表示等价。

A&a+i B *(a+i) C *a+i D a+i

5.若只需要利用形参间接访问实参指针所指向的对象,而形参本身具有相应的存储空间,则应把形参变量说明为()参数。

A指针B引用C值D指针引用

6.若只需要利用形参实现对实参值的拷贝,函数体操作形参时与实参无关,则应把形参变量说明为()参数。

A指针B引用C值D指针引用

7.下面程序的时间复杂性的量级为()。

int i=0,s1=,s2=0;

while(i++

{if (i%2) s1+=i;

else s2+=i;

}

A.O(1)

B.O(1bn)

C.O(n)

D.O(2n)

8.下面程序段的时间复杂度为()。

for(int i=0;i

for(int j=0;j

a[i][j]=i*j;

A.O(m2)

B.O(n2)

C.O(m+n)

D.O(m*n)

9.执行下面程序段时,S语句的执行次数为()。

for(int i=1;i<=n;i++)

for(int j=1,j<=i;j++)

S;

A.n(n-1)/2

B.n(n+1)/2

C.n2/2

D.n

10.在一个长度为n的顺序存储结构的线性表中,向第i个元素(1≤i≤n+1)位置插入一个元素时,需要从后向前依次后移()个元素。

A.n-i

B.n-i+l

C.n-i-l

D.i

11. 在一个长度为n的顺序存储结构的线性表中,删除第i个元素(1≤i≤n+1)时,需要从前向后依次后移()个元素。

A.n-i

B.n-i+l

C.n-i-l

D.i

12.在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为()。

A.(n+1)/2

B.n/2

C.n

D.n+1

13.在一个顺序表的表尾插入一个元素的时间复杂度为()。

A. O(n)

B. O(1)

C. O(n*n)

D. O(lbn)

14.在一个顺序表中的任何位置插入一个元素的时间复杂度为()。

A. O(n)

B. O(n/2)

C. O(1)

D. O(n2)

15.在一个单链表中删除p所指向结点的后继结点时,其算法的时间复杂度为()。

A. O(n)

B. O(n/2)

C. O(1)

D. O(n2)

16.线性表的链式存储比顺序存储更有利于进行()操作。

A.查找

B.表尾插入和删除

C.按值插入和删除

D.表头的插入和删除

17.线性表的顺序存储比链式存储更有利于进行()操作。

A.查找

B.表尾插入和删除

C.按值插入和删除

D.表头的插入和删除

18.在一个单链表中,若要在P所指向的结点之后插入一个新结点,则需要相继修改()个指针域的值.

A.1

B.2

C.3

D.4

19.在一个带头结点的循环双向链表中,若要在P所指向的结点之前插入一个新结点,则需要相继修改()个指针域的值。

A.2

B.3

C.4

D.6

20.在一个表头指针为ph的单链表中,若要向表头插入一个由指针p指向的结点,则应执行()操作。

A. ph=p; p->next=ph;

B. p->next=ph; ph=p;

C. p->next=ph; p=ph;

D. p->next=ph->next; ph->next=p;

21.在一个表头指针为ph的单链表中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()操作。

A. q->next=p->next; p->next=q;

B. p->next=q->next; q=p;

C. q->next=p->next; p->next=q;

D. p->next=q->next; q->next=p;

22.在一个单链表HL中,若要删除由指针q所指向结点的后继结点(若存在的话),则执行()操作。

A. p=q->next; p->next=q->next;

B. p=q->next; q->next=p;

C. p=q->next; q->next=p->next;

D. q->next=q->next->next; q->next=q;

23.在一个带头结点的循环双向链表中,若要在指针p所指向的结点之后插入一个q指针所指向的结点,则需要对q->next赋值为()。

A. P->prior

B. p->next

C. p->next->next

D.p->prior->prior

24.在一个带头结点的循环双向链表中,若要在指针p所指向的结点之前插入一个q指针所指向的结点,则需要对p->prior->next赋值为()。

A. q

B. p

C. p->next

D. p->prior

25. 在一个带头结点的循环双向链表中,若要删除指针p所指向的结点则执行()操作。

A. p->prior->next=p->next; p->next->prior=p->prior;

B. p->next->prior=p; p->next=p->next->next;

C. p->prior->next=p; p->next=p->next->prior;

D. p=p->next; p->prior->next=p->prior;

26.栈的插入和删除操作在()进行。

A. 栈顶

B. 栈底

C. 任意位置

D. 指定位置

27.当利用大小为N的数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入

一个元素时,首先应执行()语句修改top指针。

A.top++

B.top--

C.top=0

D.top=N-1

28.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,用top=N+1表示栈空,该数组所存储的栈的最大长度为N,则表示栈满的条件为()。

A.top==1

B.top==-1

C.top=0

D.top=N-1

29. 假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,用top==-1表示栈空,并已知栈未满,当元素x进栈时所执行的操作为()。

A.a[--top]=x

B.a[top--]=x

C.a[++top]=x

D.a[top++]=x

30. 假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,用top==-1表示栈空,并已知栈未空,当退栈并返回栈顶元素时所执行的操作为()。

A return a[--top]

B return a[top--]

C return a[++top]

D return a[top++]

31.假定一个链式栈的栈顶指针用top表示,该链式栈为空的条件()。

A.top!=NULL;

B. top==top->next;

C. top== NULL;

D. top!= top->next;

32.假定一个链式栈的栈顶指针用top表示,每个结点结构为,当p所指向的结点进栈时,执行的操作为()。

A. p->next=top; top=top->next;

B. top=p; p->next=top;

C. p->next=top->next; top->next=p;

D. p->next=top; top=p;

33.假定一个链式栈的栈顶指针用top表示,每个结点结构为,退栈时所执行的操作为()。

A.top->next=top;

B.top=top->data;

C.top=top->next;

D. top->next=top->next->next;

34.若让元素1,2,3,4依次进栈,则出栈次序不可能出现()的情况。

A.3,2,1,4

B.2,1,4,3

C.4,3,2,1

D.1,4,2,3.

35.在一个顺序循环队列中,队首指针指向队首元素的()位置。

A前一个B后一个C当前D最后

36.当利用大小为N的数组循环存储一个队列时,该队列的最大长度为()。

A.N-2

B.N-1

C.N

D.N+1

37.从一个顺序循环队列中删除元素时,首先需要()。

A.前移队首指针

B.后移队首指针

C.取出队首指针所指位置上的元素

D.取出队尾指针所指位置上的元素

38.假定一个顺序循环队列的队首和队尾指针分别用f和r表示,则判断队空的条件为()。

A.f+1==r

B.r+1==f

C.f==0

D.f==r

39.假定一个顺序循环队列存储于数组a[N],其队首和队尾指针分别用f和r表示,则判断队满的条件为()。

A.(r-1)%N==f

B.(r+1)%N==f

C.(f-1)%N==r

D.(f+1)%N==r

40.假定利用数组a[N]循环顺序存储一个队列,其队首和队尾指针分别用f和r表示,并已知队列未满,当元素x入列时所执行的操作为()。

A.a[++r%N]=x

B.a[r++%N]=x

C.a[--r%N]=x

D.a[r--%N]=x

41.假定利用数组a[N]循环顺序存储一个队列,其队首和队尾指针分别用f和r表示,并已知队列未空,当出列并返回队首元素时所执行的操作为()。

A.return a[++r%N]

B.return a[--r%N]

C.return a[++f%N]

D.return a[f++%N]

42.假定一个链式队列的队首和队尾指针分别为front和rear,则判断队空的条件为()。

A.front==rear

B.front!=NULL

C.rear!=NULL

D.front==NULL

43.假定一个链式队列的队首和队尾指针分别为front和rear,每个结点结构为,当出列时所进

行的操作为()。

A.front=front->next

B.rear=rear->next

C.front->next =rear;rear=rear->next

D.front=front->next;front->next =rear;

44.假定一个带头结点的循环链式队列的队首和队尾指针分别用front和rear表示,则判断对空的条件为()。

A.front=rear->next

B.rear==NULL

C. front==NULL

D. front ==rear

45.假定一个链式队列的队首和队尾指针分别为front和rear,每个结点结构为包含值域data 和指针域next,则使p所指结点入列所执行的操作为()。

A.p->next=NULL;rear=rear->next=p;

B.p->next=rear->next;rear=rear->next=p;

C.p->next=front;front=p;

D.p->next=front->next;front->next=p;

46.在一个长度为N的数组空间中,循环顺序存储着一个队列,该队列的队首和队尾指针分别用front和rear表示,则该队列中数组元素个数为()。

A.(rear-front)%N

B.(rear-front+N)%N

C.(rear+N)%N

D.(front+N)%N

47.二维数组A[12,10]采用行优先存储,每个数据元素占用4个存储单元,该数组的首地址(即A[0,0]的地址)为1200,则A[6,5]的地址为()。

A.1400

B.1404

C.1372

D.1460

48.有一个M×N的矩阵A,若采用行优先进行顺序存储,每个元素占用8个字节,则Aij(1≤i≤M,1≤j≤N)元素的相对字节地址(相对首元素地址而言)为()。

A.((i-1)×N+j)×8

B.((i-1)×N+j-1)×8

C.(i×N+j-1)×8

D.((i-1)×N+j+1)×8

49.有一个N×N的下三角矩阵A,若采用行优先进行顺序存储,每个元素占用k个字节,则Aij(1≤i≤N,1≤j≤i)元素的相对字节地址(相对首元素地址而言)为()。

A.(i×(i+1)/2+j-1)×4

B.(i×i/2+j)×4

C.(i×(i-1)/2+j-1)×4

D.(i×(i-1)/2+j)×4

50.树中所有结点的度等于所有结点数加()。

A.0

B.1

C.-1

D.2

51.在一棵树中,()没有前驱结点。

A.树枝结点

B.叶子结点

C.树根结点

D.空结点

52.在一棵树中,每个结点最多有()个前驱结点。

A.0

B.1

C.2

D.任意多个

53.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加()。

A.2

B.1

C.0

D.-1

54.在一棵具有n个结点的二叉树中,所有结点的空子树个数等于()。

A.n

B.n-1

C.n+1

D.2n

55.在一棵具有n个结点的二叉树的第i层上,最多具有()个结点。

A.2i

B.2i+1

C.2i-1

D.2n

56.在一棵深度为h的完全二叉树中,所含结点个数不小于()。

A.2h

B.2h+1

C.2h-1

D.2h-1

57.在一棵深度为h的完全二叉树中,所含结点个数不大于()。

A.2h

B.2h+1

C.2h-1

D.2h-1

58.在一棵具有35个结点的完全二叉树中,该树的深度为()。

A.6

B.7

C.5

D.8

59.在一棵完全二叉树中,若编号为i的结点存在左孩子,则左孩子结点编号为()。

A.2i

B.2i-1

C.2i+1

D.2i+2

60.在一棵完全二叉树中,若编号为i的结点存在右孩子,则右孩子结点编号为()。

A.2i

B.2i-1

C.2i+1

D.2i+2

61.在一棵完全二叉树中,对于编号为i(i>1)的结点其双亲结点的编号为()。

A.(i+1)/2

B.(i-1)/2

C.i%2

D.i/2

62.有如图1.1所示的一棵二叉树,则该二叉树所含单支结点数为()。

A.2

B.3

C.4

D.5

63.有如图1.2所示的一棵二叉树,则该二叉树的中序遍历序列为()。

A. ABCDEFG

B. CDBGFEA

C. CBDAEGF

D. ABECDFG

64.有如图1.2所示的一棵二叉树,则该二叉树的先序遍历序列为()。

A.ABCDEFG

B.CDBGFEA

C.CBDAEGF

D.ABECDFG

65.有如图1.2所示的一棵二叉树,则该二叉树的后序便利序列为()。

A.ABCDEFG

B.CDBGFEA

C.CBDAEGF

D.ABECDFG

66.利用n个值生成的哈夫曼树中共有()个结点。

A.n

B.n+1

C.2n

D.2n-1

67.利用3,6,8,12这4个值作为叶子结点的权,生成一棵哈夫曼树,该树的带权路径长度为()。

A.55

B.29

C.58

D.38

68.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有的入度数之和为()。

A.s

B.s-1

C.s+1

D.n

69.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有的度数之和为()。

A. s

B. s -1

C. s +1

D.2s

70.在一个具有n个顶点的无向图中,若具有e条边,则所有顶点的度数为()。

A.n

B.e

C.n+e

D.2e

71.在一个具有n个顶点的无向完全图中,所含的边数为()。

A.n

B.n(n-1)

C.n(n-1)/2

D.n(n+1)/2

72.在一个具有n个顶点的有向完全图中,所含的边数为()。

A.n

B.n(n-1)

C.n(n-1)/2

D.n(n+1)/2

73.在一个具有n个顶点的无向连通图中,它包含的连通分量的个数为()。

A.0

B.1

C.n

D.n+1

74.若有一个图中包含k个连通分量,若按照深度优先搜索的方法访问所有顶点,则必须调用()次深度优先搜索遍历的算法。

A.k

B.1

C.k-1

D.k+1

75.若要把n个顶点连接为一个连通图,则至少需要()条边。

A.n

B.n+1

C.n-1

D.2n

76.在一个具有n个顶点和e条边的无向图的邻接矩阵中,表示边存在的元素(又称为有效元素)的个数为()。

A.n

B.ne

C.e

D.2e

77.在一个具有n个顶点和e条边的有向图的邻接矩阵中,表示边存在的元素的个数为()。

A.n

B.ne

C.e

D.2e

78.在一个具有n个顶点和e条边的无向图的邻接矩阵中,边结点的个数为()。

A.n

B.ne

C.e

D.2e

79.对于一个有向图,若一个顶点的度为k1,出度为k2,则对应邻接表中该顶点单链表的边数结点为()。

A.k1

B.k2

C.k1-k2

D.k1+k2

80.对于一个有向图,若一个顶点的度为k1,出度为k2,则对应逆邻接表中该顶点单链表的边数结点为()。

A.k1

B.k2

C.k1-k2

D.k1+k2

81.对于一个无向图,下面()的说法是正确的。

A.每个顶点的入度等于出度

B.每个顶点的度等于入度和出度之和

C.每个顶点的入度为0

D.每个顶点的出度为0

82.在一个有向图的邻接表中,每个顶点单链表中结点的个数等于该顶点的()。

A.出边数

B.入边数

C.度数

D.度数减一

83.若一个图的边集为{(A,B)(A,C)(B,D)(C,F)(D,E)(D,F)},则从顶点A 开始对该图进行深度优先搜索,得到的顶点序列可能为()。

A. ABCFDE

B. ACFDEB

C. ABDCFE

D. ABDFEC

84.若一个图的边集为{(A,B)(A,C)(B,D)(C,F)(D,E)(D,F)},则从顶点A 开始对该图进行广度优先搜索,得到的顶点序列可能为()。

A.ABCDEF

B.ABCFDE

C.ABDCEF

D.ACBFDE

85.若一个图的边集{(1,2)(1,4)(2,5)(3,1)(3,5)(4,3)},则从顶点1开始对该图进行深度优先搜索,得到的顶点序列可能为()。

A.1,2,5,4,3

B.1,2,3,4,5

C.1,2,5,3,4

D.1,4,3,2,5

86.若一个图的边集{(1,2)(1,4)(2,5)(3,1)(3,5)(4,3)},则从顶点1开始对该图进行广度优先搜索,得到的顶点序列可能为()。

A. 1,2,3,4,5

B. 1,2,4,3,5

C. 1,2,4,5,3

D. 1,4,2,5,3

87.由一个具有n个顶点的连通图生成的最小树中有()条边。

A.n

B.n-1

C.n+1

D.2n

88.若查找每一个元素的概率相等,则在长度为n的顺序表上查找任一元素的平均查找长度为()。

A. n

B. n+1

C. (n-1)/2

D. (n+1)/2

89.对长度为n的单链有序表,若查找每个元素的概率相等,则查找任一个元素的平均查找长度为()。

A. n/2

B.(n+1)/2

C. (n-1)/2

D.n/4

90.对于长度为9的顺序存储的有序表,若采用二分查找,在等概率情况下的平均查找长度为()的值除以9。

A.20

B.18

C.25

D.22

91.对于长度为18的顺序存储的有序表,若采用二分查找,则查找第15个元素的查找长度为()。

A.2

B.3

C.4

D.6

92.对于顺序存储的有序表(5,12,20,26,37,42,46,50,64),若采用二分查找,则查找元素26的查找长度为()。

A.2

B.3

C.4

D.5

93.在分块查找中,若用于保存数据元素的主表长度为n,它被分为k个子表,每个子表的长度均为n/k,若用顺序查找确定块,则分块查找的平均查找长度为()。

A.n+k

B.k+n/k

C.(k+n/k)/2

D.(k+n/k)/2+1

94.在分块查找中,若用于保存数据元素的主表长度为144,它被分为12个子表,每个子表的长度均为12,若用顺序查找确定块,则分块查找的平均查找长度为()。

A.13

B.24

C.12

D.79

95.在一棵深度为h的具有n个元素的二叉排序树中,查找所有元素的最长查找长度为()。

A.n

B.lbn

C.(h+1)/2

D.h

96.在一棵平衡二叉排序树中,每个结点的平衡因子的取值范围是()。

A.-1~1

B.-2~2

C.1~2

D.0~1

97.若根据查找表(23,44,36,48,52,73,64,58)建立线性哈希表,采用H(K)=K%13计算哈希地址,则元素64的哈希地址为()。

A.4

B.8

C.12

D.13

98.若根据查找表(23,44,36,48,52,73,64,58)建立线形哈希表,采用H(K)=K%13计算哈希地址,则哈希地址为3的元素个数为()。

A.1

B.2

C.3

D.4

99.若根据查找表建立长度为m的线性哈希表,采用线性探测再哈希法处理冲突,假定对一个元素第一次计算的哈希地址为d,则下一次的哈希地址为()。

A.d

B.d+1

C.(d+1)/m

D.(d+1)%m

100.在采用线性探测再哈希法处理冲突的线性哈希表上,假定装填因子a的值为0.5,则查找任一个元素的平均查找长度为()。

A.1

B.1.5

C.2

D.2.5

101.在哈希查找中,平均查找长度主要与()有关。

A.哈希表长度

B.哈希元素个数

C.装填因子

D.处理冲突方法

102.若对n个元素进行直接插入排序,则进行第i趟排序过程前,有序表中元素的个数为()。

A.i

B.i+1

C.i-1

D.1

103.若对n个元素进行直接插入排序,在进行第i趟排序时,为寻找插入位子最多需要进行()次元素的比较,假定第0号元素放有待查的键值。

A. i

B.i-1

C.i+1

D.1

104.若对n个元素进行直接插入排序,在进行第i趟排序时,假定元素r[i+1]的插入位置为r[j],则需要移动元素的次数为()。

A.j-i

B.i-j-1

C.i-j

D.i-j+1

105.若对n个元素进行直接插入排序,在进行任意一趟排序的过程中,为寻找插入位置而需要的时间复杂度为()。

A.O(1)

B.O(n)

C.O(n2)

D. O(lbn)

106.在对n个元素进行直接插入排序的过程中,共需要进行()趟。

A.n

B.n+1

C.n-1

D.2n

107.对n个元素进行直接插入排序的时间复杂度为()。

A.O(1)

B.O(n)

C.O(n2)

D. O(lbn)

108.在对n个元素进行冒泡排序的过程中,第一趟排序至多进行()对相邻元素之间的交换。

A .n B.n-1 C.n+1 D.n/2

109.在对n个元素进行冒泡排序的过程中,最坏情况下的时间复杂度为()。

A.O(1)

B.O(lbn)

C.O(n2)

D.O(n)

110.在对n个元素进行冒泡排序的过程中,至多需要()趟完成。

A .1 B.n C.n-1 D.n/2

111.在对n个元素进行快速排序的过程中,最好情况下需要进行()趟。

A.n

B.n/2

C.lbn

D.2n

112.在对n个元素进行快速排序的过程中,最坏情况下需要进行()趟。

A.n

B.n-1

C.n/2

D.lbn

113.对下列4个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为()。

A.1,3,5,7,9

B.9,7,5,3,1

C.5,3,1,7,9

D.5,7,9,1,3

114.假定对元素序列(7,3,5,9,1,12,8,15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为()。

A.2

B.3

C.4

D.5

115.在对n个元素进行简单选择排序的过程中,在第i趟需要从()个元素中选择出最小值元素。

A.n-i+1

B.n-i

C.i

D.i+1

116.若对n个元素进行简单选择排序,则进行任一趟排序的过程中,为寻找最小值元素所需要的时间复杂度为()。

A.O(1)

B.O(lbn)

C.O(n2)

D. O(n)

117.假定一个初始堆为(1,5,3,9,12,7,15,10),则进行第一趟堆排序后得到的结果为()。

A.3,5,7,9,12,10,15,1

B.3,5,9,7,12,10,15,1

C.3,7,5,9,12,10,15,1

D.3,5,7,12,9,10,15,1

118.若一个元素序列基本有序,则选用()方法较快。

A.直接插入排序

B.简单选择排序

C.堆排序

D.快速排序

119.若要从1000个元素中得到10个最小元素,最好采用()方法。

A.直接插入排序

B.简单选择排序

C.堆排序

D.快速排序

120.在平均情况下速度最快的排序方法为()。

A.简单选择排序

B.冒泡排序

C.堆排序

D.快速排序

二﹑填空题

1.数据的逻辑结构可分为____和____两大类。

2.数据的存储结构被分为____,_____,_____和____4种。

3.在下面的程序段中,s=s+p语句被执行次数为____,p*=j语句的执行次数为____,该程序的复杂度为____。

int i=0,s=0;

while(++i<=n)

{ int p=1;

for(int j=1;j<=i;j++)

p*=j;

s=s+p;

}

4.一种数据结构的元素集合K和它的二元关系R为:K={a,b,c,d,e,f,g,h}

R={}

则该数据结构具有____结构。

5.线性表的两种存储结构分别为____和____。

6.线性表的顺序存储结构称为____,链式存储结构称为____。

7.若经常需要对线性表进行插入和删除运算,则最好采用__存储结构,若经常需要对线性表

进行查找运算,则最好采用____存储结构。

8.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为____。

9.对于一个单链表存储的线性表,在表头插入结点的时间复杂度为____,在表尾插入结点的时间复杂度为____。

10.在线性表的单链表存储中,若一个元素所在结点的地址为p,则其后的断结点的地址为____。

11.在以HL为头指针的带头结点的单链表和循环单链表中,链表为空的条件分别为____和____。

12.在____链表中,既可以通过设定一个头指针,也可以通过设定一个尾指针来确定它,即通过头指针或尾指针可以访问到该链表的每个结点。

13.在一个单链表中删除指针p所指向结点的后继结点时,需要把____的值赋给p->next指针域。

14.在一个单链表中指针p所指向结点的后面插入一个指针q所指向的节点时,首先把____的值赋给p->next,然后把____的值赋给p->next。

15.假定指向单链表中第一个结点的头指针为head,则像该单链表的表头插入指针p所指向的新结点时,首先执行____赋值操作,然后执行____赋值操作。

16.访问一个顺序表和一个单链表中第i个元素的时间复杂度分别为____和____。

17.在一个带头结点的循环单链表中,在表头插入或删除与在其它位置插入和删除,其操作过程是否相同?________。

18.在双向链表中每个结点包含有两个指针域,一个指向其____结点,另一个指向其____结点。

19.在一个双向链表中指针p所指向的结点之后插入一个指针q所指向的结点时,需要对p->next->prior指针域赋值为____。

20.在一个双向链表中删除指针p所指向的结点时,需要对p->next->prior指针域赋值为____。

21.栈又称为____表,队列又称为____表。

22.在一个用一维数组a[N]表示的顺序栈中,该栈所含元素的个数最少为____个,最多为____个。

23.像一个顺序栈插入一个元素时,首先使____后移一个位置,然后把新元素____到这个位子。

24.从一个栈删除元素时,首先取出____,然后再使____减一。

25.一个顺序栈存储一个一维数组a[M]中,栈顶指针用top表示,当栈顶指针等于____时为空栈,栈顶指针为____时为满栈。

26.假定一个链栈的栈顶指针为top,每个结点包含值域data和指针域next,当p所指向的结点入栈时,则首先执行____操作,然后执行____操作。

27. 假定一个链栈的栈顶指针为top,每个结点包含值域data和指针域next,当进行出栈运算时(假定栈非空),需要把栈顶指针修改为____的值。

28.设元素1,2,3,4,5依次进栈,若要在输出端得到序列34251,则应进行的操作序列为Push(s,1),Push(s,2),____,Pop(s),Push(s,4),Pop(s),____,____,Pop(s),Pop(s)。

29.设元素a,b,c,d依次进栈,若要在输出端得到序列cbda,则应进行的操作序列为push(s,a),push(s,b),push(s,c),____,____,____pop(s),pop(s)。

30.队列的插入操作在____进行,删除操作在____进行。

31.一个顺序循环队列存在于a[M]中,假定队首和队尾指针分别为front和rear,则判断对空的条件为____,判断对满的条件为____。

32.一个顺序循环队列存在于a[M]中,假定队首和队尾指针分别为front和rear,则求出队首和

队尾指针的下一个位置的计算公式分别为________和________。

33.在一个用一维数组a[N]存储的顺序循环队列中,该队列中的元素个数最少为____个,最多为____个。

34.向一个顺序循环队列中插入元素时,需要首先移动____,然后再向它所指位置____新元素。

35.在一个空链队列中,假定队首和队尾指针分别为f和r,当向他插入一个新结点*p时,则首先执行____操作,然后执行____操作。

36.在一个带头结点的循环链队列中,假定队首和队尾指针分别为f和r,当向它插入一个新结点*p时,则首先执行____操作,然后执行____操作。

37.假定front和rear分别为一个链队列的对首和队尾指针,则该链队列中只有一个结点的条件为________。

38.在一个链栈中,若栈顶指针等于NULL则为____;在一个链队列中,若对首和队尾的指针相同,则表示该队列为____或该队列____。

39.一个二维数组A[15,10]采用行优先方式存储,每个数据元素占用4个存储单元,以该数组第3列第0行的地址(即A[3,0]的地址)1000为首地址,则A[12,9]的地址为____。40.在二维数组a[10,20]中,每个元素占8个存储单元,假定该数组的首地址为2000,则数组元素a[6,15]的字节地址为____。

41.有一个8×8的下三角矩阵A,若将其进行顺序存储于一维数组a[N]中,则N的值为____。

42.有一个10×10的下三角矩阵A,若将其进行顺序存储于一维数组a[N]中,则Aij(1≤i ≤10,1≤j≤i)存储于a中的下标位置为____。

43.有一个8×8的下三角矩阵A,若将其进行顺序存储,每个元素占用4个字节,则A5,4元素的相对字节地址为(相对首元素地址而言)____。

44.一种数据结构的元素集合K和它的二元关系R为:

K={a,b,c,d,e,f,g,h}

R={}则该数据结构具有____结构。

45.对于一棵具有n个结点的树,则该树中所有结点的度数之和为____。

46.在一棵树中,____结点没有前驱结点,其余每个结点有并且只有一个____,可以有人以多个____结点。

47.如图1.3所示为一棵树,该树的叶子结点数为____个,单支结点数为____个,双分支结点数为____个,三分支结点数为____个。

48.如图1.3所示的一棵树,结点K的所有祖先的结点数为____个,结点B的所有子孙结点数为____个。

49.如图1.3所示的一棵树,结点D和X的层数分别为____和____。

50.如图1.4所示的一棵树,则树中所含的结点数为____个,树的深度为____,树的度为____。

51.如图1.4所示的一棵树,则度为3,2,1,0的结点数分别为____,____,____。

52.如图1.4所示一棵树,则结点H的双亲为____,孩子结点为____。

53.在一棵二叉树中,假定双分支结点数为5个,单分支结点数为6个,则叶子结点数为____。

54.对于一棵二叉树,若一个结点的编号i,若它的左孩子结点存在,则其编号为____,若右孩子结点存在,则其编号为____,若双亲结点存在,则其编号为____。

55.在一棵二叉树中,第5层上的结点数最多为____。

56.假定一棵二叉树的结点数为18,则它的最小深度为____,最大深度为____。

57.如图1.5所示为一棵二叉树,则E结点的双亲结点数为____,左孩子结点为____,右孩子结点为____。

58.如图1.5所示为一棵二叉树,它含有双支结点____个,单分支结点____个,叶子结点____

个。

59.假定一棵二叉树顺序存储在一维数组a中,若a[5]元素的左孩子存在则对应的元素为____,若右孩子存在则对应的元素为____,双亲元素为____。

60.若对一棵二叉树从0开始进行结点编号,并按此编号把它存储到一维数组a中,即编号为0的结点存储到a[0]中,依次类推,则a[i]元素的左孩子为____,右孩子为____,双亲元素(i>0)为____。

61.对于一棵具有n个结点的二叉树,对应____二叉链表中指针总数为____个,其中____个用于指向孩子结点,____个指针空闲。

62.在一棵深度为h的完全平衡二叉树中,最少含有____个结点,最多含有____个结点。

63.一棵深度为5的完全二叉树中的结点数最少为____个,最多为____个。

64.如图1.6所示为一棵二叉树,对它进行先序遍历结果为____。

65.若将如图1.7所示为一棵树转换为二叉树,该二叉树中双支结点的个数为____个,单支结点的个数为____个,叶子结点个数为____。

66.一棵树转换为二叉树后如图1.8所示,则原树中分支结点数为____,叶子结点数为____。

67.一个树林转换成二叉树后如图1.9所示,则该素林中包含____棵树。

68.若由3,6,8,12,10作为叶子结点的值生成一棵哈夫曼树,则该树的深度为____,带权路径长度为____。

69.一种数据结构的元素集合K和它的二元关系R为:K={1,2,3,4,5,6}

R={(1,2)(2,3)(2,4)(3,4)(3,5)(3,6)(4,5)(4,6)}

则该数据结构具有____数据结构。

70.在一个图中,所有顶点的度数之和等于所有边数的____倍。

71.在一个具有n个顶点的无向完全图中,包含有____条边,在一个具有n个顶点的有向完全图中,包含有____条边。

72.已知一个连通图的边集为{(1,2),(1,3),(1,4),(2,3),(2,5),(3,5),(4,5)},则度为3的顶点的个数有__个。

73.假定一个有向图的顶点的集为{a,b,c,d,e,f},边集{},则出度为0的顶点个数为__,入度为1的顶点个数为__。

74.在一个具有n个顶点的无向图中,要连通所有顶点则至少需要__条边。

75.表示图的两种存储结构为__和__。

76.在一个连通图中存在着__个连通分量。

77.若一个图的顶点集为{a,b,c,d,e,f},边集为{(a,b),(a,c),(b,c),(d,e)},则该图含有__个连通分量。

78.若一个图的边集为{<0,1>,<0,2>,<0,3>,<0,4>,<1,2>,<2,4>,<3,4>},则从顶点V0到顶点V4共有__条简单路径。

79.如图1.10所示为一个带权有向图,从顶点V0到顶点V4的最短路径长度为__。

80.对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小至少为__×__。

81.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点的个数分别为__和__。

82.在有向图的邻接表和逆邻接表表示中,每个顶点邻接表分别链接着该顶点的所有__和__。

83.有一个图的边集为{(a,c),(a,e),(b,e),(c,d),(d,e)},从顶点a出发进行深度优先搜索遍历得到的顶点序列为____,从顶点a出发进行广度优先搜索遍历得到的顶点序列为____。

84.一个图的边集为{(a,c),(a,e),(c,f),(d,c),(e,b),(e,d)},从顶点a出发出发进行深

度优先搜索遍历得到的顶点序列为____,从顶点a出发进行广度优先搜索遍历得到的顶点序列为____。

85.图的__优先搜索遍历算法是一种递归算法,图的__优先搜索遍历算法需要使用队列。

86.若一个连通图中每个边上的权值均不同,则得到的最小生成树是__(唯一/不唯一)。

87.以顺序查找方法从长度为n的顺序表或单链表中查找一个元素时,平均查找长度为__。

88.对长度为n的查找表进行查找时,假定查找第i个元素的概率为P,查找长度(即在查找过程中依次同有关元素比较的总次数)为C,则在查找成功的情况下的平均查找长度的计算公式为____。

89.假定一个顺序表的长度为40,并假定查找每个元素的概率都相同,则在查找成功的情况下的平均查找长度__,则在查找不成功的情况下的平均查找长度__。

90.以折半查找方法从长度为n的有序表中查找一个元素时,平均查找长度约等于__减一。

91.以折半查找方法从长度为50的有序表中查找一个元素时,其查找长度不超过__。

92.从有序表(12,18,30,43,56,78,82,95)中分别折半查找43和56元素时,其查找长度分别为__和__。

93.假定对长度n=50的有序表进行折半查找,则对应的判定树深度为__,最后一层的结点数为__。

94.在分块查找中,假定查找表(即主表)的长度为96,被等分为8个子表,则进行分块查找的平均查找长度为__。

95.假定对长度为n的有序表进行分块查找,并假定每个子表的长度为,则进行分块查找的平均查找长度为__。

96.在一棵二叉树排序中,每个分支结点的左子树上所有结点的值一定__该结点的值,右子树上所有结点的值一定__该结点的值。

97.从一棵二叉排序树中查找某个元素时,若元素的值等于根结点的值,则表明__,若元素的值小于根结点的值,则继续向__查找,若元素的值大于根结点的值,则继续向__查找。

98.向一棵二叉排序树种插入一个元素时,若元素的值小于根结点的值,则接着向根结点的__插入,若元素的值大于根结点的值,则接着向根结点的__插入。

99.在一棵平衡二叉排序树中,每个结点的左子树深度与右子树深度之差的绝对值不超过__。

100.假定对线性表(38,25,74,52,48),进行散列存储,采用H(K)=K%7作为哈希函数,采用线性探测再散列法处理冲突,则在建立哈希表过程中,将会碰到__次冲突。101.假定对线性表(38,25,74,52,48)进行散列存储,采用H(K)=K%7作为哈希函数,采用线性探测再散列法处理冲突,则平均查找长度为__。

102.在线性表的散列存储中,装填因子a又称装填系数,若用m表示散列表的长度,n表示散列存储的元素个数,则a等于__。

103.对线性表(18,25,63,50,42,32,90)进行散列存储时,若选用H(K)=K%9作为哈希函数,则散列地址为0的元素有__个,则散列地址为5的元素有__个。

104.每次从无序子表中取出一个元素,把它插入到有序子表的适当位置,此种排序方法叫做__排序;每次从无序子表中挑选出一个最小或最大元素,把它交换到有序表的一段,此种排序方法叫做__排序。

105.若对一组记录(46,79,56,38,40,80,35,50,74)进行直接插入排序,当把第8个记录插入到前面已排序的有序表时,为寻找插入位置需比较__次。

106.__排序方法能够每次使无序表中的第一个记录插入到有序表中。

107.对n个记录进行冒泡排序时,最少的比较次数为__,最少的趟数为__。

108.假定一组记录为(46,79,56,38,40,84),在冒泡排序过程中进行第一趟排序后的结果为__。

109.假定一组记录为(46,79,56,64,38,40,84,43),在冒泡排序过程中进行第一趟排序时,元素97将最终下沉到其后第__位置。

110.__排序方法使键值达的记录逐渐下沉,使键值小的记录逐渐上浮。

111.假定一组记录为(46,79,56,38,40,80)对其进行快速排序的过程中,共需要__趟。

112.假定一组记录为(46,79,56,25,76,38,40,80)对其进行快速排序的第一次划分后,右区间内元素个数为__。

113.假定一组记录为(46,79,56,38,40,80),对其进行快速排序的第一次划分后的结果为__。

114.在所有排序方法中,__排序方法采用的是折半查找法的思想。

115.在简单选择排序中,记录比较次数的时间复杂度为__,记录移动次数的时间复杂度为__。

116.若对一组记录(46,79,56,38,40,80,35,50,74)进行简单选择排序,用k表示最小值元素的下标,进行第一趟是可得初值为1,则在第一趟选择最小值的过程中,k的值被修改__次。

117.在时间复杂度为O(n2)的所有排序方法中,__排序方法使不稳定的。

118.假定一个堆为(38,40,56,79,46,84),则利用堆排序方法进行第一趟交换和对根结点筛运算后得到的结果为__。

119.在所有排序方法中,__方法使数据的组织采用的是完全二叉树的结构。

120.__排序方法能够每次从无序表中查找出一个最小值。

三、名词解释

1.数据

2.数据元素

3.数据对象

4.数据结构

5.逻辑结构

6.时间复杂度

7.空间复杂度

8.栈

9.队列10.压缩存储11.树形结构12.结点的度

13.树的度14.树的深度15.有序树16.遍历

17.哈夫曼树18.邻接关系19.路径20.连通图

21.强连通图22.完全无向图23.完全有向图24.主关键字

四、简答题

1.简述线性结构,树形结构,网状结构的不同。

2.简述算法复杂度的评价方法。

3.设有两个算法在同一台机器上运行,其执行时间分别为100n2和2n,要使前者快于后者,n 至少为多大?

4.在顺序表中插入和删除一个结点需平均移动多少个结点,具体移动的次数取决于哪些因素?

5.简述定义:线性表、单链表、线性表的存储方式、循环链表、双向链表。

6.在单链表,双向链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将p从相应的链表中删去?若可以,其时间复杂度分别为多少?

7.有哪些链表可仅有一个尾指针来唯一确定,即从尾指针出发能访问到链表上任何一个结点?

8.何时选用顺序表,何时选用链表作为线性表的存储结构?

9.简述栈与队列的不同之处。

10.设将整数1,2,3,4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序压入其中,请回答下述问题:

若入、出栈次序为Push(1),Pop(),Push(2),Push(3), Pop(),Pop(),Push(4),Pop(),则出栈的数字序列如何?

能否得到出栈序列1423和1432,并说明为什么不能得到或者如何得到。

请分析1,2,3,4的各种排列中,哪些序列是可以通过相应的入,出栈操作得到的。

11.举例说明栈的“上溢”和“下溢”现象。

12.循环队列的优点是什么?如何判别它的空和满?

13.假定用一维数组a[7]顺序存储一个循环队列,队首和队尾指针分别用front和rear表示,当前队列中有5个元素:23,45,67,80,34,其中23为队首元素,front的值为3,请画出对应的存储状态,当连续进行4次出队运算后,再让15,36,48元素依次进队,请再次画出对应的存储状态。

14.空串和空格串有何区别?字符串中空格符有何意义?空串在串的处理中有何作用?

15.两个字符串相等的充要条件是什么?

16.二叉树和树之间有何区别?一棵度为2的树与二叉树有何区别?

17.在一棵二叉树如图1.11所示。写出对此树进行先序,中序,后序遍历时得到的结点序列。

18.已知一棵二叉树的中序遍历序列为CDBAEGF,先序遍历序列为ABCDEFG,试问能不能唯一确定一棵二叉树?若能,画出该二叉树。若给定先序遍历序列和后序遍历序列,能否唯一确定?

19.将图1.12所示的树转换成二叉树。

20.一棵度为2的有序树与一棵二叉树有何区别?

21.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

22.高度为h的完全二叉树至少有多少个结点?至多有多少个结点?

23.试采用顺序存储方法和链式存储方法分别画出如图1.13所示各二叉树的存储结构。

24.假定用于通信的电文由8个字母组成,分别是A,B,C,D,E,F,G,和H,各字母在电文中出现的概率为:5%,25%,4%,7%,9%,12%,30%,8%,试为8个字母设计哈夫曼编码。

25.根据如图1.14所示的带权有向图G,试回答下面问题:

(1)给出从结点V1出发按深度优先搜索遍历G所得的结点序列,并给出按广度优先搜索遍历G所得的结点序列。

(2)给出从结点V1到结点V8的最短路径。

26.对于如图1.15所示的有向图,请给出

(1)对应的邻接矩阵,并给出A,B,C三个顶点的出度与入度。

(2)邻接表表示和逆邻接表表示。

(3)强连通分量。

27.假设图的顶点是A,B,C,D,…请根据下述邻接矩阵画出相应的有向图和无向图。(1)0 1 1 1 (2)0 1 1 0 0

1 0 1 1 0 0 0 1 0

1 1 0 1 1 0 0 0 1

1 1 1 0 0 1 0 1 0

28.对n个顶点的无向图和有向图,采用邻接矩阵和邻接表表示时,如何判别下列有关问题:(1)图中有多少条边?

(2)任意两个顶点i和j是否有边相连?

(3)任意一个顶点的度是多少?

29.试述顺序查找法,折半查找法和分块查找法对查找表中元素的要求。

30.若有一个长度为n的表,其查找该表中每个元素的概率相同,采用顺序查找、折半查找和分块查找3种查找方法进行查找时的其平均查找长度各为多少?

31.设有一组关键字(17,13,14,153,29,35)需插入到表长为12的散列表中,请回答下列问题:

(1)设计一个适合该散列表的哈希函数。

(2)用设计的哈希函数将上述关键字插入到散列表中,画出其结构,并指出用线性探测再散列法解决冲突时构造散列表的装填因子为多少?

32.选择排序算法是否稳定?为什么?

33.给出一组关键字(19,01,26,92,87,11,43,87,21),进行冒泡排序,列出每一遍排序后关键字的排列次序,并统计每遍排序进行的关键字比较次数。

34.直接插入排序算法是否稳定?为什么?

35.堆排序为什么是不稳定的排序?试举例说明。

五、应用题

1.指出下列每个算法的功能并求出其时间复杂性。

(1)int sum1(int n)

{ int p=1,s=0;

for(int i=1;i<=n;i++)

{ p*=i;

s+=p;

}

return s;

}

(2) void mtable(int n)

{for(int i=1;i<=n;i++)

for(int j=i;j<=n;j++)

printf(“i*j=%d ”,i*j);

printf(“\n”);

}

(3)void cmatrix(int a[M][N],int d) /*M和N为全局整型常量*/

{

for(int i=0;i

for(int j=0;j

a[i][j]*=d;

}

2. void AA(sqlist &L)/*L为一个顺序表*/

{initiate_sqlist(L);/*初始化顺序表L*/

end_insert(L,30);/*把三十个元素插入到表尾*/

begin_insert(L,50)/*把五十个元素插入到表头*/

int a[4]={5,8,12,15};

int i;

for(i=0;i<=4;i++)

end_insert(L,a[i]);/*依次把每个元素插入到表尾*/

for(i=0;i<=4;i++)

begin_insert(L,a[i]);/*依次把每个元素插入到表头*/

}

该算法被调用执行后,得到的顺序表L为:__。

3. viod AC(lklist &HL)/*HL为一个单链表*/

{initiate_lklist(HL);/*初始化单链表HL*/

insert_lklist(HL,30,1);/*向单链表第一个位置插入元素30*/

insert_lklist(HL,50,2);/*向单链表第二个位置插入元素50*/

int a[5]={15,8,9,26,12};

for(inti=0;i<5;i++)begin_insert(HL,a[i]);

/*向HL的表头依次插入数组a中的前五个元素值*/

int x=delete_lklist(HL,3);

/*此函数删除HL中的第三个结点并返回该结点的值*/

end_lklist(HL,x);/*向HL的表尾插入x*/

}

该算法被调用执行后,得到的HL单链表所对应的线性表为:____。

4.分别编写在顺序表和带头结点的单链表上统计出值为x的元素个数的算法,统计结果由函数值返回。

5.分别编写在顺序表和带头结点的单链表上删除其值等于x的所有元素。

6.分别编写在顺序表和单链表上删除具有重复值的多余结点,使每个结点的值均不同。如将线性表(2,8,9,2,5,5,6,8,7,2)变为(2,8,9,5,7)。

7.有6个元素A,B,C,D,E,F依次入栈,允许任何时候出栈,能否得到下列的各个出栈序列,若能,给出出栈操作的过程,若不能,简述其理由。

(1)CDBEFA(2)ABEDFC(3)DCEABF(4)BAEFCD

8.设计一个递归算法,计算出返回1至n之间的所有整数平方和。

9.斐波那契(Fibonacci)数列的定义为:它的第一项和第二项均为1,以后各项为前两项之和。若斐波那契数列中第n项用Fib(n)表示,则计算公式为:

试编写出计算Fib(n)的递归算法和非递归算法。

10.假定在一个链式队列中只设置队尾指针,不设置队首指针,并且让队尾结点的指针域指向队首结点(称此为循环队列),试分别写出在循环队列上进行插入和删除操作的算法。11.设以二叉链表为二叉树的存储结构,结点的结构如下:

其中data为整数,试设计一个算法void change(bitreptrr),若结点左孩子data的值大于右孩子的data域的值,则交换其左右子树。

12.设计一个算法,统计出二叉树中等于给定值x的结点个数,该统计值由变量k带回(k 的初值为0)。

V oid countl(bitreptrr,datatype x,int &k)

13.设计一个算法,从一棵二叉树查找出所有结点的最大值并返回。

Datatype maximum(bitreptrr)

14.假设用于通信的电文有8个字母组成,字母在电文中出现的频率分别为:7,19,2,6,32,3,21,10。试为这8个字母设计哈夫曼编码。

15.已知一个无向图的邻接矩阵如图1.16所示,试写出从顶点V0出发分别进行深度优先和

广度优先搜索遍历得到的顶点序列。

深度优先搜索序列:__。

广度优先搜索序列:__。

16.已知一个无向图的邻接表如图1.17所示,试写出从顶点V0出发分别进行深度优先和广度优先搜索遍历得到的顶点序列。

深度优先搜索序列:__。

广度优先搜索序列:__。

17.已知一个带权有向图如1.18所示,用迪杰斯特拉提出的算法求其任一对结点之间的最短路径。

18.构造如图1.19所示加权图的最小生成树(给出利用克鲁斯卡尔算法构造的过程)。

19.对长度为11有序集,进行折半查找,试画出它的一棵判定树,并求在等概率情况下的平均查找长度。

20.已知一个顺序存储的有序表为(15,26,34,39,45,56,58,63,74,6),试画出对应的二分查找判定树,求出其平均查找长度。

21.假定一个线性表为(38,52,25,74,68,16,30,54,90,72)画出按线性表中元素的次序生成的一棵二叉排序树,求出其平均查找长度。

22.假定一个待散列存储的线性表为(32,75,29,63,48,94,25,36,18,70,49,80),散列地址空间为HT[11],若采用除留余数法构造散列函数和链接法处理冲突,试画出最后得到的链式哈希函数列表,并求出平均查找长度。

23.已知一组记录为(46,74,53,14,26,38,86,65,27,34)。

(1)给出采用直接插入排序法进行排序时每一趟的排序结果。

(2)给出采用冒泡排序法进行排序时每一趟的排序结果。

(3)给出采用快速排序法进行排序时每一趟的排序结果。

(4)给出采用直接选择排序法进行排序时每一趟的排序结果。

(5)给出采用堆排序法进行排序时每一趟的排序结果。

24.编写一个对整型数组A[n+1]中的A[1]至A[n]元素进行选择排序的算法,使得首先从待排序区间中选择出一个最小值并同第一个元素交换,再从待排序区间中选择一个最大值并同最后一个元素进行交换,反复进行直到最后待排序区间中元素个数不超过1为止。

参考答案

一选择题

1.D

2.C

3.A

4.B

5.A

6.C

7.C

8.D

9.B 10.B

11.A12.C 13.B 14.A15.C 16.D 17.B 18.B 19.C 20.B

21.D 22.C 23.B 24.A25.A26.A27.B 28.A29.C 30.B

31.C 32.D 33.C 34.D 35.A36.B 37.B 38.D 39.B 40.A

41.C 42.D 43.A44.D 45.B 46.B 47.D 48.B 49.C 50.C

51.C 52.B 53.A54.C 55.C 56.D 57.C 58.A59.A60.C

61.D 62.B 63.C 64.A65.B 66.D 67.A68.A69.D 70.D

71.C 72.B 73.B 74.A75.C 76.D 77.C 78.D 79.B 80.C

81.A82.A83.B 84.D 85.A86.C 87.B 88.D 89.B 90.C

91.B 92.C 93.D 94.A95.D 96.B 97.C 98.B 99.D 100.B

101.C 102.A 103.C 104.D 105.B 106.C 107.C 108.B 109.D 110.A

111.C 112.B 113.D 114.B 115.A116.D 117.A 118.A 119.B 120.D

二填空题

1.线形;非线形

2.顺序;链式;索引;散列存储结构

3. n;n(n+1)/2;O(n)

4.线性

5.顺序;链式

6.顺序表;链式表

7链式;顺序8.O(n);O(1)

9.O(1);O(n)10.p->next

11.HL->next==NULL; HL->next==HL 12. 循环

13.p->next->next 14.p->next

15.p->next=head;head=p 16.O(1);O(n)

17.相同18.前趋;后续

19.q 20. p->prior

21. 先进后出;先进先出22.0;1

23.栈顶指针;插入(写入)24. 栈顶元素; 栈顶指针

25.-1;M-1 26.p->next=top;top=p

27.top->next 28.Push(s,3);Pop(s);Push(s,5)

29.Pop(s);Pop(s);Push(s,d) 30.队尾;队首

31.front=rear;(r+1)%M==front 32.(front+1)%M;(r+1)%M

33.0;N-1 34.队尾指针;插入(写入)

35.p->next=NULL;r=f=p 36.p->next=r->next;r=r->next=p

37.(front=rear)&&(front!=NULL)或者(front=rear)&&(rear!=NULL)38.空栈;空;只含有一个结点

39.1432 40.3080

41.3642.i(i-1)/2+j-1 43.52

44.树型或层次45.n-1

46.根;前趋(父);后续(子)47.7;1;4;1

48.2;6 49.3;4

50.10;4;3 51.2;1;1;6

52.B;I和J 53.6

54.2i;2i+1;i/2

55.16

56.5;8

57.A;F;空

58.2;2;3

59.a[10];a[11];a[2]

60.a[2i+1];a[2i+2];a[(i-1)/2]

61.2n,n-1,n+1

62.2h-1;2h-1

63.16;31

64.ABCDEF;CBAEDF;CBEFDA

65.2;4;3

66.4;5

67.3

68.4;87

69.图状

70.2

72.4

73.2;4

74.n-1

75.邻接矩阵;邻接表

76.1

77.3

78.4

79.7

80.n;n

81.e;2e

82.出边;入边

83.acdeb;acedb(答案不唯一)

84.acfebd;acefbd(答案不唯一)

85.深度;广度

86.唯一

87.(n+1)/2

88.

89.20.5;41

90.1b(n+1)

91.6

92.1;3

93.6;19

94.11

95.

96.小于;大于

97.查找成功;左子树;右子树

98. 左子树;右子树

99.1

100.5

101.2

102.n/m

103.3;2

104.插入;选择

105.4

106.直接插入

107.n-1;1

108.(46,56,38,40,79,84)

109.4

110.冒泡

111.3

112.4

113.[40 38]46[56 79 80]

114.快速

116.2

117.快速

118.(40,46,56,79,84,38)

119.堆排序

120.简单排序

三名词解释

数据是指反映客观事物的信息的集合,它是数据结构所要描述的东西。

2.数据元素是数据的一个个体,它是数据的基本单位。

数据对象是指在数据这个集体中人们感兴趣的一个子集,通常,数据对象中的元素具有某些相同的特性。

数据结构是指相互之间有关联的数据元素的集合。

逻辑结构是指数据之间的逻辑关系。

算发在计算机执行时在时间资源方面消耗的多少。

算发在计算机执行时在空间资源方面消耗的多少。

栈是被限定为仅能在表尾进行插入和删除运算的线性表。

列对是一种只允许在表的一端进行插入,而在另一端进行删除的受限的线性表。

压缩存储是指给多个值相同的元素只分配一个空间,对零元素不分配空间。

树型结构是一类很重要的非线性数据结构,在这类结构中,元素结点之间存在明显的分支和层次关系。

一个结点的子树的个数称为该结点的度。

树的所有结点中最大的度称为树的度。

树的深度是指树的所有结点中最大的层次,又称树的高度。

有序树是指如果一棵树所有结点的子结点的左右顺序不可颠倒的树。

遍历是指循某条线路,依次访问某数据结构中的全部结点,而且每个结点只被访问一次。哈夫曼树是指以文本中出现的字符为叶子结点的最优二叉树,其中叶子结点的全值为该字符在文本中出现的几率。

邻接关系是指在无向图中若存在边(Vi,Vj),则称结点V i邻接于Vj或结点Vj邻接于Vi;在有向图中若存在边(Vi,Vj),则称结点Vj邻接于结点Vi。

路径是连接两个结点的边的集合。

如果无向图中的任意两个结点都是通的,则称无向图是连通图。

在有向图中,任意一对结点V i和Vj之间都存在路径,则称有向图为强连通图。

若一个有向图中每一对结点之间都存在一条边,则称无向图为完全无向图。

若一个有向图中每一对结点之间都存在两条不同的边,则称有向图为完全有向图。

主关键字是指能用来唯一标识该记录的数据项。

四简答题

线性结构是指数据元素之间存在一对一的关系。

树型结构是指元素之间存在一对多的关系。

图或网状结构是指数据元素之间存在多对多的关系。

算法的复杂度分析可分为时间复杂度和空间复杂度。时间复杂度以基本操作重复执行的次数为算法的时间量度。空间复杂度指算发所存储空间的量度。

3.要使100n2快于2n时, 必须满足100n2(2n, 可以算出n的值为15时, 2n恰好大于100n2, 所

数据结构与算法习题及答案

第1章绪论 习题 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 3.简述逻辑结构的四种基本关系并画出它们的关系图。 4.存储结构由哪两种基本的存储方法实现 5.选择题 (1)在数据结构中,从逻辑上可以把数据结构分成()。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 (2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。 A.存储结构B.存储实现 C.逻辑结构D.运算实现 (3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。 A.数据具有同一特点 B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等 (4)以下说法正确的是()。 A.数据元素是数据的最小单位 B.数据项是数据的基本单位 C.数据结构是带有结构的各数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 (5)以下与数据的存储结构无关的术语是()。 A.顺序队列B.链表C.有序表D.链栈 (6)以下数据结构中,()是非线性数据结构 A.树B.字符串C.队D.栈 6.试分析下面各程序段的时间复杂度。 (1)x=90;y=100; while(y>0) if(x>100) {x=x-10;y--;} elsex++; (2)for(i=0;i

数据结构习题和答案

习题课 填空 1、对于一棵二叉树,若一个结点的编号为i,则它的左孩子结点的编号为,双亲结点的编号为。 2、向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动个元素。 3、在一棵二叉树中,若双分支结点数为5个,单分支结点数为6个,则叶子结点数 为个。 4、为了实现折半查找,线性表必须采用方法存储。顺序 5、一种抽象数据类型包括数据对象和。 6、在以L为表头指针的带表头附加结点的单链表和循环单链表中,判断链表为空的条件分别为__________和_______。 7、数据结构被形式地定义为(D, R),其中D是的有限集合,R是D上的有限集合。 8、队列的插入操作在进行,删除操作在进行。 9、二叉搜索树的中序遍历得到的结点序列为____ ____。 10、在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。 11、栈的特点是。 12、在单链表中,除了首元结点外,任一结点的存储位置由。 13、在一个具有n个顶点的无向图中,要连通所有顶点则至少需要条边。 14、深度为k(设根的层数为1)的完全二叉树至少有个结点,至多 有个结点。 15、一棵深度为6的满二叉树有个分支结点和个叶子结点。 16、一个算法的效率可分为效率和效率。 17、队列的特点是。 18、一棵深度为5的满二叉树中的结点数为个。 19、在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图中,包含有________条边。

简答题 1、已知一组元素为(38,26,62,94,35,50,28,55),画出按元素排列顺序输入生成的一棵二叉搜索树。 答: 2、假设有二维数组A[0..5,0..7],每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为1000,计算: (1)末尾元素A57的第一个字节地址为; (2)若按列存储时,元素A47的第一个字节地址为。 (3) 数组A的体积(存储量); (4) 若按行存储时,元素A14的第一个字节地址为。

数据结构-第六章-图-练习题及答案详细解析(精华版)

图 1. 填空题 ⑴ 设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。 【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。 ⑵ 任何连通图的连通分量只有一个,即是()。 【解答】其自身 ⑶ 图的存储结构主要有两种,分别是()和()。 【解答】邻接矩阵,邻接表 【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。 ⑷ 已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。 【解答】O(n+e) 【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。 ⑸ 已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。 【解答】求第j列的所有元素之和 ⑹ 有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。 【解答】出度

⑺ 图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。 【解答】前序,栈,层序,队列 ⑻ 对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal 算法求最小生成树的时间复杂度为()。 【解答】O(n2),O(elog2e) 【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。 ⑼ 如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。 【解答】回路 ⑽ 在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。 【解答】vi, vj, vk 【分析】对由顶点vi, vj, vk组成的图进行拓扑排序。 2. 选择题 ⑴ 在一个无向图中,所有顶点的度数之和等于所有边数的()倍。 A 1/2 B 1 C 2 D 4 【解答】C 【分析】设无向图中含有n个顶点e条边,则。

数据结构试题库答案

数据结构试题及答案 一、单项选择题 (1)一个算法应该就是()。 A)程序???B)问题求解步骤得描述 C)要满足五个基本属性??D) A与C (2)算法指得就是()。 A)计算机程序???B)解决问题得计算方法 C)排序算法???D)解决问题得有限运算序列。 (3)与数据元素本身得形式、内容、相对位置、个数无关得就是数据得()。 A) 存储结构B) 逻辑结构C)算法D)操作 (4)从逻辑上可以把数据结构分为( )两大类。 A)动态结构、静态结构??B) 顺序结构、链式结构 C)线性结构、非线性结构???D)初等结构、构造型结构 (5)下列叙述中正确得就是()。 A)一个逻辑数据结构只能有一种存储结构 B)数据得逻辑结构属于线性结构,存储结构属于非线性结构 C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理得效率 D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理得效率 (6)数据得基本单位就是() ?A) 数据项??B) 数据类型C)数据元素??D)数据变量 (7)下列程序得时间复杂度为() i=0;s=0; while(s

数据结构习题及答案——严蔚敏_课后习题答案 精品

第一章绪论 选择题 1.组成数据的基本单位是() (A)数据项(B)数据类型(C)数据元素(D)数据变量 2.数据结构是研究数据的()以及它们之间的相互关系。 (A)理想结构,物理结构(B)理想结构,抽象结构 (C)物理结构,逻辑结构(D)抽象结构,逻辑结构 3.在数据结构中,从逻辑上可以把数据结构分成() (A)动态结构和静态结构(B)紧凑结构和非紧凑结构 (C)线性结构和非线性结构(D)内部结构和外部结构 4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。 ①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像 ②(A)结构(B)关系(C)运算(D)算法 5.算法分析的目的是()。 (A)找出数据结构的合理性(B)研究算法中的输入和输出的关系 (C)分析算法的效率以求改进(D)分析算法的易懂性和文档性 6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。 ①(A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法 ②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性 (C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性 二、判断题 1.数据的机内表示称为数据的存储结构。() 2.算法就是程序。() 3.数据元素是数据的最小单位。() 4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。() 5.算法的时间复杂度取决于问题的规模和待处理数据的初态。() 三、填空题 1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。 2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。 3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。 4.在图形结构中,每个结点的前驱结点数和后续结点数可以_________。 5.线性结构中元素之间存在________关系,树形结构中元素之间存在______关系,图形结构中元素之间存在_______关系。 6.算法的五个重要特性是_______、_______、______、_______、_______。 7.数据结构的三要素是指______、_______和________。 8.链式存储结构与顺序存储结构相比较,主要优点是________________________________。 9.设有一批数据元素,为了最快的存储某元素,数据结构宜用_________结构,为了方便插入一个元素,数据结构宜用____________结构。 四、算法分析题 1.求下列算法段的语句频度及时间复杂度参考答案: 选择题1. C 2.C 3. C 4. A、B 5. C 6.C、B

数据结构试题及答案10套

一、单选题(每题 2 分,共20分) 1. 1.对一个算法的评价,不包括如下(B )方面的内容。 A.健壮性和可读性B.并行性C。正确性D.时空复杂度 2.2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向 的结点,则执行(A ). 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; 3.3.对线性表,在下列哪种情况下应当采用链表表示?( B ) A.经常需要随机地存取元素 B。经常需要进行插入和删除操作 C。表中元素需要占据一片连续的存储空间D.表中元素的个数不变 4. 4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序 列的是( C ) A. 2 3 1 ??? B. 3 2 1 C。 3 1 2 ??? D. 1 23 5. 5.AOV网是一种(D )。 A.有向图B.无向图C.无向无环图D.有向无环图 6.6。采用开放定址法处理散列表的冲突时,其平均查找长度(B)。 A.低于链接法处理冲突B.高于链接法处理冲突C.与链接法处理冲突相同 D。高于二分查找 7.7。若需要利用形参直接访问实参时,应将形参变量说明为(D ) 参数. A。值B。函数 C.指针 D。引用 8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结 点都具有相同的( A )。 A。行号 B.列号 C.元素值 D.非零元素个数 9.9.快速排序在最坏情况下的时间复杂度为( D )。 A。O(log 2n) B.O(nlog 2 n) C。0(n) D.0 (n2) 10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( C ). A.O(n) B. O(1) C。 O(log 2 n) D. O(n2)二、运算题(每题 6 分,共24分)

数据结构复习题附答案

一.是非题 1. 数据结构(应该是抽象数据类型)可用三元式表示(D,S,P)。其中:D是数据对象,S是D上的关系,P是对D的基本操作集。(f) 2 简单地说,数据结构是带有结构的数据元素的集合。(t) 3 判断带头结点的非空循环单链表(头指针为L)中指针p所指结点是最后一个元素结点 的条件是:p->next==L。(t) 4 线性表的链式存储结构具有可直接存取表中任一元素的优点。(f) 5 线性表的顺序存储结构优于链式存储结构。(f) 6. 在单链表P指针所指结点之后插入S结点的操作是: P->next= S ; S-> next = P->next;。(f) (顺序弄反了S-> next = P->next; P->next= S ;) 7 对于插入、删除而言,线性表的链式存储优于顺序存储。(t) 8. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。(f) 9. 栈和队列是操作上受限制的线性表。(t) 10. 队列是与线性表完全不同的一种数据结构。(f) (栈和队列是操作上受限制的线性表) 11. 队列是一种操作受限的线性表,凡对数据元素的操作仅限一端进行。(f) (两端) 12. 栈和队列也是线性表。如果需要,可对它们中的任一元素进行操作。(f) ( “如果需要,可对它们中的任一元素进行操作.” 这里的意思是在O(1)的时间来读和改某个元素。比如数组的直接索引。 栈:如果需要,每一次只能对栈顶的元素进行操作 队列:如果需要,每一次只能对两端,或者只能对队列头的元素进行操作。) 13. 栈是限定仅在表头进行插入和表尾进行删除运算的线性表。(f) 14. 二叉树中每个结点有两个子结点,而对一般的树,则无此限制,所以,二叉树是树的特殊情形。(f) (二叉树和树相互独立) 15 二叉树是一棵结点的度最大为二的树。(f) (二叉树和树相互独立) 16 赫夫曼树中结点个数一定是奇数。(t) 17 在二叉树的中序遍历序列中,任意一个结点均处在其左孩子结点的后面。(t) (LDR) 18 假设B是一棵树,B′是对应的二叉树。则B的后根遍历相当于B′的后序遍历。(f) (后根遍历相当于中序遍历) 19. 通常,二叉树的第i层上有2i-1个结点。(f) (应该为1~2i-1个) 20. 中序线索二叉树的优点是便于在中序下查找直接前驱结点和直接后继结点。(t) 21 二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面。(t) 22 由树结点的先根序列和后根序列可以唯一地确定一棵树。(t) 23 邻接多重表可以用以表示无向图,也可用以表示有向图。(f) (只能表示无向图,有向图用十字链表) 24 可从任意有向图中得到关于所有顶点的拓扑次序。(f) (带环图没有) 25 有向图的十字链表是将邻接表和逆邻接表合二为一的链表表示形式。(t)

《数据结构》题库及答案

《数据结构》题库及答案 一、选择题 1.线性表的顺序存储结构是一种 的存储结构,线性表的链式存储结构是一种 的存储结构。 a. 随机存储; b.顺序存储; c. 索引存取; d. HASH 存取 2.一个栈的入栈序列是a,b,c,d,e ,则栈的不可能的输出序列是 。 a. edcba; b. decba; c. dceab; d.abcde 3.一个队列的入队序列是1,2,3,4,则队列的输出序列是 。 a. 4,3,2,1; b. 1,2,3,4; c. 1,4,3,2; d.3,2,4,1 4.在一个单链表中,已知p 结点是q 结点的直接前驱结点,若在p 和q 之间插入结点s ,则执行的操作是 。 a. s->nxet=p->next; p->next=s; b. p->next=s->next; s->next=p; c. q->next=s; s->next=p; d. p->next=s; s->next=q; 5.设有两个串p,q ,求q 在p 中首次出现的位置的运算称作 。 a.联接 b.模式匹配 c.求子串 d.求串长 6.二维数组M 的成员是6个字符(每个字符占一个存储单元)组成的串,行下标i 的范围从0到8,列下标j 的范围从1到10,则存放M 至少需要 个字节。 a. 90 b.180 c.240 d.540 7.在线索二叉树中,结点p 没有左子树的充要条件是 。 a. p->lch==NULL b. p->ltag==1 c. p->ltag==1且p->lch=NULL d. 以上都不对 8.在栈操作中,输入序列为(A ,B ,C ,D ),不可能得到的输出序列为:______ A 、(A , B , C , D ) B 、(D ,C ,B ,A ) C 、(A ,C ,D ,B ) D 、(C ,A ,B ,D ) 9.已知某二叉树的后序序列是dabec ,中序序列是debac ,则它的先序序列是 。 A 、acbed B 、decab C 、deabc D 、cedba 10.设矩阵A 是一个对称矩阵,为了节省存储空间,将其下三角部分(见下图)按行序存放在一维数组B[1..n(n-1)/2]中,对任一上三角部分元素)(j i a ij ,在一维数组B 的存放位置是 。

数据结构习题及参考答案

习题1 一、单项选择题 A1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 C2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 D3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 B4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) CA5.算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 A.低 B.高 C.相同 D.不好说 8.数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对

数据结构习题及答案精编版

第一章 1.在数据结构中,从逻辑上可以把数据结构分为(C ) A.动态结构和静态结构 B. 紧凑结构和非紧凑结构 C.线性结构和非线性结构 D. 内部结构和外部结构 ● 2.在数据结构中,与所使用的计算机无关的是( A ) A. 逻辑结构 B. 存储结构 C. 逻辑和存储结构 D. 物理结构 3.下面程序的时间复杂度为____O(mn)_______。 for (int i=1; i<=m; i++) for (int j=1; j<=n; j++ ) S+=i 第二章线性表 ●链表不具备的特点是(A) A 可以随机访问任一结点(顺序) B 插入删除不需要移动元素 C 不必事先估计空间 D 所需空间与其长度成正比 2. 不带头结点的单链表head为空的判定条件为(A ),带头结点的单链表head为空的判定条件为(B ) A head==null B head->next==null C head->next==head D head!=null ●3.在线性表的下列存储结构中,读取元素花费时间最少的是(D) A 单链表 B 双链表 C 循环链表 D 顺序表 ● 4.对于只在表的首、尾两端进行手稿操作的线性表,宜采用的存储结构为(C) A 顺序表 B 用头指针表示的单循环链表 C 用尾指针表示的单循环链表 D 单链表 ● 5.在一个具有n 个结点的有序单链表中插入一个新的结点,并保持链表元素仍然有序, 则操作的时间复杂度为( D ) A O(1) B O(log2n) C O(n2) D O(n) ● 6.在一个长度为n (n>1)的单链表上,设有头和尾两个指针,执行(B)操作与链表的长 度有关 A 删除单链表中第一个元素 B 删除单链表中最后一个元素 C 在第一个元素之前插入一个新元素 D 在最后一个元素之后插入一个新元素 ●7.与单链表相比,双向链表的优点之一是(D) A 插入删除操作更简单 B 可以进行随机访问 C 可以省略表头指针或表尾指针 D 顺序访问相邻结点更容易 ●8.若list是某带头结点的循环链表的头结点指针,则该链表最后那个链结点的指针域 (头结点的地址)中存放的是( B ) A list的地址 B list的内容 C list指的链结点的值 D 链表第一个链结点的地址 ●9.若list1和list2分别为一个单链表与一个双向链表的第一个结点的指针,则( B ) A list2比list1占用更多的存储单元 B list1与list2占用相同的存储单元 C list1和list2应该是相同类型的指针变量 D 双向链表比单链表占用更多的存储单元 10.链表中的每个链结点占用的存储空间不必连续,这句话正确吗? (不正确) 11. 某线性表采用顺序存储结构,元素长度为4,首地址为100,则下标为12的(第13个)元素的存储地址为148。V 100+4*12=148 11.在顺序表的(最后一个结点之后)插入一个新的数据元素不必移动任何元素。 12.若对线性表进行的操作主要不是插入删除,则该线性表宜采用(顺序)存储结构,若频繁地对线性表进行插入和删除操作,则该线性表宜采用( 链 )存储结构。

数据结构 第六章 图 练习题及答案详细解析

图 1. 填空题 ⑴设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。 【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。 ⑵任何连通图的连通分量只有一个,即是()。 【解答】其自身 ⑶图的存储结构主要有两种,分别是()和()。 【解答】邻接矩阵,邻接表 【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。 ⑷已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。 【解答】O(n+e) 【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。 ⑸已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。 【解答】求第j列的所有元素之和 ⑹有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。 【解答】出度 ⑺图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。 【解答】前序,栈,层序,队列 ⑻对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal 算法求最小生成树的时间复杂度为()。 【解答】O(n2),O(elog2e) 【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。 ⑼如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。 【解答】回路 ⑽在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。 【解答】vi, vj, vk

数据结构试题及答案(10套最新)

单选题(每题2分,共20分) 1. 1. 对一个算法的评价,不包括如下(B )方面的内容。 A .健壮性和可读性 B .并行性 C .正确性 D .时空复杂度 2.2. 在带有头结点的单链表HL 中,要向表头插入一个由指针 p 指向 的结点,则执行(A )。 A. p->next=HL->next; HL->next=p; B. p->next=HL; HL=p; 都具有相同的(A )。 A.行号 B .列号 C .元素值 D .非零元素个数 9. 快速排序在最坏情况下的时间复杂度为(D )。 A. O(log 2n) B . O(nlog 2n) C . 0(n) D 10.10. 从二叉搜索树中查找一个元素时,其时间复杂度大致 为 A. O(n) B. O(1) C. O(log 2 n) D. O(n 二、 运算题(每题6分,共24分) 1. 1. 数据结构是指数据及其相互之间的 _________________ 。当结点之 间存在M 对N (M N)的联系时,称这种结构为 __________________________ 。 2. 2. 队列的插入操作是在队列的_ _尾 ________ 行,删除操作是在队 列的 ____ 首 _____ 行。 3. 3. 当用长度为N 的数组顺序存储一个栈时,假定用top==N 表示栈 C. p->next=HL; p=HL; 3. 3. A. C. D. HL=p; p-> next=HL; 对线性表,在下列哪种情况下应当采用链表表示? 经常需要随机地存取元素 B. 表中元素需要占据一片连续的存储空间 一个栈的输入序列为1 2 3, 4. 4. 列的是(C ) A. 2 3 1 C. 3 1 2 AOV 网 是一种(D ) 有向 图 B .无向图 (B ) 经常需要进行插入和删除操作 D.表中元素的个数不变 则下列序列中不可能是栈的输出序 B. 3 2 1 5. 5. 6. .无向无环图 D .有向无环图 采用 开放定址法处理散列表的冲突时,其平均查找长度( B. 高于链接法处理冲突 D .高于二分查找 7. 8. 6. A.低于链接法处理冲突 .与链接法处理冲突相同 7. 参数。 A.值 8. B)。 若需要利用形参直接访问实参时,应将形参变量说明为( B .函数 C .指针 D .引用 在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点 9. .0(n 2) (C )。 2 )

数据结构习题及答案——严蔚敏

第一章绪论 一、选择题 1.组成数据的基本单位是() (A)数据项(B)数据类型(C)数据元素(D)数据变量 2.数据结构是研究数据的()以及它们之间的相互关系。 (A)理想结构,物理结构(B)理想结构,抽象结构 (C)物理结构,逻辑结构(D)抽象结构,逻辑结构 3.在数据结构中,从逻辑上可以把数据结构分成() (A)动态结构和静态结构(B)紧凑结构和非紧凑结构 (C)线性结构和非线性结构(D)内部结构和外部结构 4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。 ① (A)数据元素(B)计算方法(C)逻辑存储(D)数据映像 ② (A)结构(B)关系(C)运算(D)算法 5.算法分析的目的是()。 (A)找出数据结构的合理性(B)研究算法中的输入和输出的关系 (C)分析算法的效率以求改进(D)分析算法的易懂性和文档性 6.计算机算法指的是(①),它必须具备输入、输出和(②)等5 个特性。 ① (A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法

② (A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性 (C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性 二、判断题 1.数据的机内表示称为数据的存储结构。() 2.算法就是程序。() 3.数据元素是数据的最小单位。() 4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。() 5.算法的时间复杂度取决于问题的规模和待处理数据的初态。() 三、填空题 1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。 2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。 3.在树形结构中,树根结点没有_______结点,其余每个结点有且只 有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。 4.在图形结构中,每个结点的前驱结点数和后续结点数可以 _________。 5.线性结构中元素之间存在________关系,树形结构中元素之间存 在______关系,图形结构中元素之间存在_______关系。 6.算法的五个重要特性是_______、_______、______、_______、

数据结构复习题及答案(12级).

一、选择题。(每小题2分,共40分) (1) 计算机识别.存储和加工处理的对象被统称为____A____。 A.数据 B.数据元素 C.数据结构 D.数据类型 (2) 数据结构通常是研究数据的____ A _____及它们之间的联系。 A.存储和逻辑结构 B.存储和抽象 C.理想和抽象 D.理想与逻辑 (3) 不是数据的逻辑结构是____ A ______。 A.散列结构 B.线性结构 C.树结构 D.图结构 (4) 数据结构被形式地定义为,其中D是____ B _____的有限集,R是____ C _____的有限集。 A.算法 B.数据元素 C.数据操作 D.逻辑结构 (5) 组成数据的基本单位是____ A ______。 A.数据项 B.数据类型 C.数据元素 D.数据变量 (6) 设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是____ A ______。 A.线性结构 B.树型结构 C.图型结构 D.集合 (7) 数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为___ C ____。 A.存储结构 B.逻辑结构 C.顺序存储结构 D.链式存储结构 (8) 在数据结构的讨论中把数据结构从逻辑上分为___ A ____。 A.内部结构与外部结构 B.静态结构与动态结构 C.线性结构与非线性结构 D.紧凑结构与非紧凑结构 (9) 对一个算法的评价,不包括如下____ B _____方面的内容。 A.健壮性和可读性 B.并行性 C.正确性 D.时空复杂度 (10) 算法分析的两个方面是__ A ____。 A.空间复杂性和时间复杂性 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 (11) 线性表是具有n个___ C _____的有限序列(n≠0)。 A.表元素 B.字符 C.数据元素 D.数据项 (12) 线性表的存储结构是一种____ B ____的存储结构。 A.随机存取 B.顺序存取 C.索引存取 D.HASH存取

算法与数据结构题库与答案

一、单项选择题 1 某算法的时间复杂度是O(n 2 ) ,表明该算法()。 A 问题规模是n2 B 问题规模与n2成正比 C 执行时间等于n2 D 执行时间与n2成正比 2、关于数据结构的描述,不正确的是()。 A数据结构相同,对应的存储结构也相同。 B数据结构涉及数据的逻辑结构、存储结构和施加其上的操作等三个方面。 C数据结构操作的实现与存储结构有关。 D定义逻辑结构时可不考虑存储结构。 3、按排序策略分来,起泡排序属于()。 A插入排序B选择排序C交换排序D归并排序 4、利用双向链表作线性表的存储结构的优点是()。 A便于进行插入和删除的操作 B 提高按关系查找数据元素的速度 C节省空间D便于销毁结构释放空间 5、一个队列的进队顺序为1,2,3,4,则该队列可能的输出序列是()。 A 1,2,3,4 B 1,3,2,4 C 1,4,2,3 D 4,3,2,1 6、 Dijkstra算法是按()方法求出图中从某顶点到其余顶点最短路径的。 A按长度递减的顺序求出图的某顶点到其余顶点的最短路径 B按长度递增的顺序求出图的某顶点到其余顶点的最短路径 C通过深度优先遍历求出图中从某顶点到其余顶点的所有路径 D通过广度优先遍历求出图的某顶点到其余顶点的最短路径 7、字符串可定义为n( n≥ 0)个字符的有限()。其中,n是字符串的长度,表明字符串中字符的个数。 A集合B数列C序列D聚合 8、在二维数组A[9][10]中,每个数组元素占用 3 个存储单元,从首地址SA 开始按行连续存放。在这种情况下,元素A[8][5]的起始地址为()。 A SA+141 B SA+144 C SA+222 D SA+255 9、已知广义表为L(A(u,v,(x,y),z),C(m,(),(k,l,n),(())),((())),(e,(f,g),h)),则它的长度是()。 A2B3C4D5 10.对于具有n(n>1)个顶点的强连通图,其有向边条数至少有_____。 A. n+1 B. n C. n-1 D. n-2 11.一个递归算法必须包括 __________ 。 A. 递归部分 B . 结束条件和递归部分 C. 迭代部分 D. 结束条件和迭代部分 12.从逻辑上看可以把数据结构分为__________两大类。 A.动态结构、静态结构B.顺序结构、链式结构 C.线性结构、非线性结构D.初等结构、构造型结构 13、若在长度为n 的顺序表的表尾插入一个新元素的渐进时间复杂度为()。 A O(n) B O(1) C O(n 2) D O(log 2n) 14.采用顺序搜素方式搜索长度为 n 的线性表时,在等概率情况下,搜索成功时的平均搜索 长度为 __________。 A. n B. n/2 C . (n+1)/2 D. (n-1)/2 15、非空的循环单链表first的链尾结点(由p 所指向)满足()。 A p->link==NULL; B P==NULL;

数据结构习题与答案

第 1 章绪论 课后习题讲解 1、填空 ⑴( )就是数据的基本单位,在计算机程序中通常作为一个整体进行考虑与处理。 【解答】数据元素 ⑵( )就是数据的最小单位,( )就是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的就是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为( )、( )、( )与( )。 【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有( )与( )两种基本方法,不论哪种存储结构,都要存储两方面的内容:( )与( )。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别就是( )、( )、( )、( )、( )。 【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性 ⑹算法的描述方法通常有( )、( )、( )与( )四种,其中,( )被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度就是( )的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为( ),若为 n*log25n,则表示成数量级的形式为( )。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2、选择题 ⑴顺序存储结构中数据元素之间的逻辑关系就是由( )表示的,链接存储结构中的数据元素之间的逻辑关系就是由( )表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

数据结构练习试题和答案解析

第1章绪论 一、判断题 1.数据的逻辑结构与数据元素本身的容和形式无关。(√) 2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(√) 3.数据元素是数据的最小单位。(×) 4.数据的逻辑结构和数据的存储结构是相同的。(×) 5.程序和算法原则上没有区别,所以在讨论数据结构时可以通用。(×) 6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。(√) 7.数据的存储结构是数据的逻辑结构的存储映象。(√) 8.数据的物理结构是指数据在计算机实际的存储形式。(√) 9.数据的逻辑结构是依赖于计算机的。(×) 10.算法是对解题方法和步骤的描述。(√) 二、填空题 1.数据有逻辑结构和存储结构两种结构。 2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。 3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。 4.树形结构和图形结构合称为非线性结构。 5.在树形结构中,除了树根结点以外,其余每个结点只有1个前驱结点。 6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。 7.数据的存储结构又叫物理结构。 8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。 9.线性结构中的元素之间存在一对一的关系。 10.树形结构中的元素之间存在一对多的关系。 11.图形结构的元素之间存在多对多的关系。 12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)3个方面的容。 13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系有限集合。 14.算法是一个有穷指令的集合。 15.算法效率的度量可以分为事先估算法和事后统计法。 16.一个算法的时间复杂度是算法输入规模的函数。 17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模的n的函数。 18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O(nlog2n)。 19.若一个算法的语句频度之和为T(n)=3n+nlog2+n2,则算法的时间复杂度为O(n2)。 20.数据结构是一门研究非数值计算的程序问题中计算机的操作对象,以及它们之间的关系和运算的学 科。 三、选择题 1.数据结构通常是研究数据的(A)及它们之间的相互关系。 A.存储结构和逻辑结构B.存储和抽象C.联系和抽象D.联系与逻辑 2.在逻辑上可以把数据结构分成(C)。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.部结构和外部结构。 3.数据在计算机存储表示时,物理地址和逻辑地址相同并且是连续的,称之为(C)。 A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构 4.非线性结构中的每个结点(D)。 A.无直接前驱结点.B.无直接后继结点.

数据结构课后习题及答案

填空题(10 * 1’ = 10’) 一、概念题 .当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。 .当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。 .带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。 .循环队列的引入,目的是为了克服假溢出。 .长度为0的字符串称为空串。 .组成串的数据元素只能是字符。 .设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。 .为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。 .广义表的深度是广义表中括号的重数 .有向图G可拓扑排序的判别条件是有无回路。 .若要求一个稠密图的最小生成树,最好用Prim算法求解。 . 直接定址法法构造的哈希函数肯定不会发生冲突。 .排序算法所花费的时间,通常用在数据的比较和交换两大操作。 .通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。 .对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。 .存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。 .抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。 .一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。 .在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。 .在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。 .队列是限制在表的一端进行插入和在另一端进行删除的线性表,其运算遵循先进先出原则。 .栈是限定尽在表位进行插入或删除操作的线性表。 .在链式队列中,判定只有一个结点的条件是(Q->rear==Q->front)&&(Q->rear!=NULL)。 .已知链队列的头尾指针分别是f和r,则将x入队的操作序列是node *p=(node *)malloc(node); p->next=x; p->next=NULL; if(r) {r->next=p; r=p;} else {r=p; f=p;}。 .循环队列的满与空的条件是(rear+1)%MAXSIZE==fornt和(front=-1&&rear+1==MAXSIZE)。 .串是一种特殊的线性表,其特殊性表现在数据元素都是由字符组成。 .字符串存储密度是串值所占存储位和实际分配位的比值,在字符串的链式存储结构中其结点大小是可变的。 .所谓稀疏矩阵指的是矩阵中非零元素远远小于元素总数,则称该矩阵为矩阵中非零元素远远小于元素总数,则称该矩阵为稀疏矩阵。 .一维数组的逻辑结构是线性结构,存储结构是顺序存储结构;对二维或多维数组,分别按行优先和列优先两种不同的存储方式。 .在有向图的邻接矩阵表示中,计算第i个顶点入度的方法是求邻接矩阵中第i列非0元素的个数。 网中,结点表示活动,边表示活动之间的优先关系,AOE网中,结点表示事件,边表示活动。 .按排序过程中依据不同原则对内部排序方法进行分类,主要有选择排序﹑交换排序﹑插入排序归并排序等4类。 .在堆排序、快速排序和归并排序中若只从排序结果的稳定性考虑,则应选择归并排序方法;若只从平均情况下排序最快考虑,则应选择快速排序方法;若只从最坏情况下排序最快且要节省类存考虑,则应选择堆排序方法。 .直接插入排序用监视哨的作用是存当前要的插入记录,可又省去查找插入位置时对是否出界的判断。 .设表中元素的初始状态是按键值递增的,则直接插入排序最省时间,快速排序最费时间。 .下列程序判断字符串s是否对称,对称则返回1,否则返回0;如?(“abba”)返回1,?(”abab”)返回0. Int f (char*s) { Int i=0,j=0; 求串长*/

相关文档