文档库 最新最全的文档下载
当前位置:文档库 › 数据结构第8章查找练习题

数据结构第8章查找练习题

数据结构第8章查找练习题
数据结构第8章查找练习题

一、单选题

1.下列查找方法中,不属于动态的查找方法是( )。

A .二叉排序树法

B .平衡树法

C .散列法

D .二分查找法

2.适用于静态的查找方法为( )。

A .二分查找、二叉排序树查找

B .二分查找、索引顺序表查找

C .二叉排序树查找、索引顺序表查找

D .二叉排序树查找、散列法查找

3.静态查找表与动态查找表二者的根本差别在于( )。

A .它们的逻辑结构不一样

B .施加在其上的操作不同

C .所包含的数据元素的类型不一样

D .存储实现不一样

4.对长度为10的顺序表进行查找,若查找前面5个元素的概率相同,均为1/8,查找后面5个元素的概率相同,均为3/40,则查找任一元素的平均查找长度为( )。

A .5.5

B .5

C .39/8

D .19/4

5.( )存储方式适用于折半查找。

A .键值有序的单链表

B .键值有序的顺序表

C .键值有序的双链表

D .键值无序的顺序表

6.对线性表进行二分查找时,要求线性表必须( )。

A .以顺序方式存储

B .以链接方式存储

C .顺序存储,且结点按关键字有序排序

D .链式存储,且结点按关键字有序排序

7.在索引顺序表中查找一个元素,可用的且最快的方法是( )。

A .用顺序查找法确定元素所在块,再用顺序查找法在相应块中查找

B .用顺序查找法确定元素所在块,再用二分查找法在相应块中查找

C .用二分查找法确定元素所在块,再用顺序查找法在相应块中查找

D .用二分查找法确定元素所在块,再用二分查找法在相应块中查找

8.在索引查找中,若主表长度为144,它被均分为12子表,每个子表的长度均为12,则索引查找的平均查找长度为( )。

A .13

B .24

C .12

D .79

9.由同一关键字集合构造的各棵二叉排序树( )。

A .形态和平均查找长度都不一定相同

B .形态不一定相同,但平均查找长度相同

C .形态和平均查找长度都相同

D .形态相同,但平均查找长度不一定相同

10.对二叉排序树进行( ),可以得到各结点键值的递增序列。

A .先根遍历

B .中根遍历

C .层次遍历

D .后根遍历

11.下述序列中,哪个可能是在二叉排序树上查找35时所比较过的关键字序列?

A .2,25,40,39,53,34,35

B .25,39,2,40,53,34,35

C .53,40,2,25,34,39,35

D .39,25,40,53,34,2,35

12.在A VL 树中,每个结点的平衡因子的取值范围是( )。

A .-1~1

B .-2~2

C .1~2

D .0~1

13.在AVL 树中,任一结点的( )。

A .左、右子树的高度均相同

B .左、右子树高度差的绝对值不超过1

C .左、右子树的结点数均相同

D .左、右子树结点数差的绝对值不超过1

14.下面关于B 树和B +树的叙述中,不正确的是

A .都是平衡的多叉树

B .都是可用于文件的索引结构

C .都能有效地支持顺序检索

D .都能有效地支持随机检索

15.右图是一棵( )。

2822221915100528

2610

A.4阶B-树B.4阶B+树C.3阶B-树D.3阶B+树16.对包含n个关键字的散列表进行检索,平均检索长度是( )。

A.O(log2n) B.O(n) C.不直接依赖于n D.O(nlog2n) 17.在散列查找中,平均查找长度主要与( )有关。

A.散列表长度B.散列元素的个数C.装填因子D.处理冲突方法18.要解决散列引起的冲突问题,常采用的方法有( )。

A.数字分析法、平方取中法B.数字分析法、线性探测法

C.二次探测法、平方取中法D.二次探测法、链地址法

19.从理论上讲,将数据以( )结构存放,查找一个数据的时间不依赖于数据的个数n。A.二叉查找树B.链表C.散列表D.顺序表

20.假定有k个关键字互为同义词,若用线性探测法把这k个关键字存入散列表中,至少要进行( )次探侧。

A.k-1 B.k C.k+1 D.k(k+1)/2

二、判断题

1.顺序查找法不仅可用于顺序表上的查找,也可用于链表上的查找。

2.二分查找所对应的判定树,是一棵理想平衡的二叉排序树。

3.二叉排序树的形态与关键字的输入序列有关,但平衡二叉排序树是相同的。

4.如果根结点的左子树和右子树高度差不超过1,则该二叉树是平衡二叉树。

5.二叉排序树上,以根到任一结点的路径为界,则:路径左边结点<路径结点<路径右边结点。

6.在二叉排序树中,即使删除一个结点后马上再插入该结点,该二叉排序树的形态也可能不同。

7.用线性探测法解决突出时,同义词在散列表中是相邻的。

8.不论数据如何组织,分别在10000个结点和10个结点的查找表中进行查找,前者的平均查找长度肯定比后者大。

9.在开散列表中不会出现堆积现象。

10.开散列表和闭散列表的装填因子都可大于、等于或小于1。

三、填空题

1.评价查找效率的主要标准是____。

2.查找表的逻辑结构是____。集合

3.对长度为100的顺序表,在等概率情况下,查找成功时的平均查找长度为____,在查找不成功时的平均查找长度为____。

4.在150个结点的有序表中二分法查找,不论成功与否,键值比较次数最多为____。5.索引顺序表上的查找分两个阶段:____、____。

6.从n个结点的二叉排序树中查找一个元素,平均时间复杂性大致为____。

7.散列表中同义词是指____。

8.散列表既是一种____方式又是一种____方法。

9.散列表中要解决的两个主要问题是:____、____。

10.散列表的冲突处理方法有____和____两种,对应的散列表分别称为开散列表和闭散列表。

四、应用题、综合题

4.对关键字序列{11,78,10,34,47,2,59,21}构造散列表,取散列函数为H(K)=K%11,用链地址法解决冲突,画出相应的散列表,并分别求查找成功和不成功时的平均查找长度。4.根据元素插入的先后次序不同,可构成多种形态的二叉排序树。请画出4棵含1,2,3,4四个元素且以1为根、深度为4的二叉排序树。

4.将一组键值{28,21,41,6,12,70}插入到散列表中,散列函数为H(key)=key%5,

1)计算各关键字的散列地址;

2)画出相应的开散列表;

3)计算等概率下查找成功时的平均查找长度。

4.对关键字序列(25, 16, 34, 39, 28, 56),

1)画出按此序列生成的二叉排序树。

2)计算等概率下查找成功时的平均查找长度。

4.已知一个顺序存储的有序表为(15,26,34,39,45,56,58,63,74,76),

1)画出对应的二分查找判定树;

2)计算等概率时查找成功的平均查找长度。

4.将一组键值{28,21,41,6,12,70,69}插入到表长为9的散列表中,散列函数采用除余法,用线性探查法解决冲突,

1)计算各关键字的散列地址;

2)画出相应的闭散列表;

3)计算等概率下查找成功时的平均查找长度。

4.将一组键值{18,21,41,6,12,67}插入到散列表中,散列函数为H(key)=key%7,

1)计算各关键字的散列地址;

2)画出相应的开散列表;

3)计算等概率下查找成功时的平均查找长度。

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

平均查找长度等于29/10

2.假定一个线性表为(38,52,25,74,68,16,30,54,90,72),画出按线性表中元素的次序生成的一棵二叉排序树,求出查找成功和不成功的平均查找长度(指关键字比较次数)。若查找键值20,需要进行几次关键字比较?

成功时平均查找长度32/10;比较3次:38、25、16

3.请画出从下面的二叉排序树中删除关键码40后的结果。

20

1140

62450

835

4560

3

28

4.对关键字序列{23,45,14,17,9,29,37,18}构造散列表,取散列地址为HT[0..6],散列函数为H(K)=K%7,用拉链法解决冲突,画出相应的散列表,并求在等概率下,查找成功时的平均查找长度。

5.已知散列函数为H(k)=k%11,关键值序列为25、21、41、6、12、69、20、15、22。6.用线性探测法处理冲突,散列表长度为12。试画出该散列表,并分别计算查找成功和不成功时关键字的平均比较次数。

7.在包含n个关键字的线性表里进行顺序查找,若查找第i个关键字的概率为p i,p i如下分布:p1=1/2,p2=1/4,......,p n-1=1/2n-1,p n=1/2n。求成功检索的平均比较次数。

8.若对有n个元素的有序顺序表和无序顺序表进行顺序搜索,试就下列三种情况分别讨论两者在等搜索概率时的平均搜索长度是否相同?

(1).搜索失败;

(2).搜索成功, 且表中只有一个关键码等于给定值k的对象;

(3).搜索成功, 且表中有若干个关键码等于给定值k的对象, 要求一次搜索找

出所有对象。

解:(1) 不同。因为有序顺序表搜索到其关键码比要查找值大的对象时就停止搜索,报告失败信息,不必搜索到表尾;而无序顺序表必须搜索到表尾才能断定搜

索失败。

(2) 相同。搜索到表中对象的关键码等于给定值时就停止搜索,报告成功信息。

(3) 不同。有序顺序表中关键码相等的对象相继排列在一起,只要搜索到第一个就

可以连续搜索到其它关键码相同的对象。而无序顺序表必须搜索全部表

中对象才能确定相同关键码的对象都找了出来,所需时间就不相同了。

五、程序分析与填空

1.编写算法,返回二叉排序树中的关键字最大(或最小)的结点地址。

提示:关键字最大的结点是“最右下”的结点;关键字最小的结点是“最左下”的结点。

pointer search(bitree t)

{

pointer p;

if(t==NULL)

return NULL; //空树

p=t;

while(p->rchild!==NULL) p=p->rchild; //向右下搜索

return p;

}

2.编写算法,在二叉排序树中查找键值为K的结点。

pointer search(bitree t,keytype K) //递归算法

{

if(t==NULL) return NULL; //空树

if(t->data==K) return t; //找到

else if(t->data>K)

return search(t->lchild,K); //找左子树

else

return search(t->rchild,K); //找右子树

}

=》候选

2.对有n个记录的有序表采用二分查找,其平均查找长度的量级为( )。

A O(n)

B O(n2)

C O(1)

D O(log2n) 2.对长度为n的有序表二分查找,则对所有元素的最长查找长度为( )。

A.?log2(n+1)?

B. ?log2n?

C. ?n/2?

D. ?(n+1)/2?

2.对长度为n的有序表二分查找,则对所有元素的最长查找长度为( )。

A. ?log2(n+1)?+1

B. ?log2n?+1

C. ?n/2?+1

D. ?(n+1)/2?+1 2.对长度为100的有序表二分查找,若查找不成功,至少比较( )次。

A、9

B、8

C、7

D、6 6.二分查找法要求查找表中各元素的键值必须是( )排列。

A.递增或递减

B.递增

C.递减

D.无序33.散列存储中,冲突是指( )。

A.两个元素具有相同的序号B.两个记录的关键字相同

C.数据元素过多D.不同关健字值对应相同的存储地址

20.查找表内元素的关键字一定是整型量。

20.静态查找表的检索与修改被分成两个不交叉的阶段分别进行。

20.在n个结点的有序表中进行二分查找,关键字比较次数最多为(n+1)/2。

10.二叉排序树的中序遍历序列是递增的,所以前序或后序遍历序列不可能也是递增的。20.若两棵二叉排序树的中序序列相同,则它们的形态也相同。

20.在二叉排序树的查找中,能逐步缩小查找范围,故效率肯定比顺序查找快。20.二叉排序树是用来进行排序的。

20.冲突处理的开放地址法就是当冲突发生后,依次探查冲突地址后面的各地址单元,直到找到一个空单元或所找关键字为止。

10.装填因子对闭散列表的查找效率影响较大,对开散列表影响不大。

10.线性探查法在解决同义词冲突的过程中,可能引起非同义词的冲突。

20.开散列表的查找效率一般高于闭散列表。

20.散列表可从关键字算出存放地址,故查找中实际没有必要进行关键字的比较。4.等概率情况下,对长度为n的顺序表,查找任一元素的平均查找长度为( )。

A .n B.n+1 C. (n-1)/2 D. (n+1)/2 1.等概率情况下,对长度为n的单链有序表,查找任一元素的平均查找长度为( )。

A.n/2

B.(n+1)/2

C.(n-1)/2

D.n/4

10.在索引查找中,若主表长度为n,它被均分为k个子表,每个子表的长度均为n/k,则索引查找的平均查找长度为( )。

A .n+k B. k+n/k C. (k+n/k)/2 D. (k+n/k)/2+1 3.在索引查找中,若主表长度为n,它被均分为若干个子表,每个子表的长度均为s,则索引查找的平均查找长度为( )。

A. (n+s)/2

B. (n/s+s)/2+1

C. (n+s)/2+1

D. (n/s+s)/2 14.从n个结点的二叉搜索树中查找一个元素,最坏时间复杂性为( )。

A.O(n)

B.O(1)

C.O(log2n)

D.O(n2) 4.按递增顺序输入n个记录所建立的二叉排序树,平均查找长度的量级为( )。

A.O(n)

B.O(nlog2n )

C.O(1)

D.O(log2n) 4.在深度为h的n个元素的二叉排序树中,查找所有元素的最长查找长度为( )。A.n B.log2n C.(h+1)/2 D.h 4.从n个结点的二叉搜索树中查找一个元素,平均时间复杂性大致为( )。

A.O(n)

B.O(1)

C.O(log2n)

D.O(n2)

4. 向n个结点的二叉搜索树中插入一个元素,时间复杂性大致为( )。

A.O(1)

B.O(log2n )

C.O(n)

D.O(n log2n) 4.根据n个元素建立一棵二叉搜索树,时间复杂性大致为( )。

A.O(n)

B.O(log2n )

C.O(n2)

D.O(n log2n) 5.对包含n个关键字的平衡二叉排序树进行检索,平均检索长度是( )。

A.O(log2n) B.O(n) C.不确定D.○(nlog2n)

8.在索引表中,若一个索引项对应主表中的一条记录,则称此索引为____索引,若对应主表中的若干条记录,则称此索引为____索引。

7.在索引表中,每个索引项至少包含有____域和____域这两项。

9.若对长度n=10000的线性表进行二级索引存储,每级索引表中的索引项是下一级20个记录的索引,则一级索引表的长度为________,二级索引表的长度为________。11.平衡二叉排序树高度的数量级为________。O(n)

12.对m阶B_树,每个非根结点的关键字数目最多为____个。

14.在B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度________。

13.对m阶B-树,若某结点因插入新关键字而引起结点分裂,则此结点原有的关键字的个数是_______;

20.线性探测中的堆积现象是指_______________________。

15.散列表中冲突是指_______________________。

10.对关键字集合{1,2,3},所有可能的二叉排序树有________棵。

=》综合

2.在长度为9的有序表二分查找,则等概率时查找成功的平均搜索长度为( )。

A. 20/9

B. 18/9

C. 25/9

D. 22/9

2.对长度为18的有序表二分查找,则查找第15个元素的查找长度为( )。

A、3

B、4

C、5

D、6 2.在关键字序列(12,23,34,45,56,67,78,89,91)中二分查找关键字为89和12的结点时,所需进行的比较次数分别为( )。

A.4,3 B.3,3 C.4,4 D.3,4

2.有一个长度为20的有序表采用二分查找方法进行查找,共有____个元素的查找长度为3。

3.若数组A[1..20]的元素按关键字递增,某个元素x处于A[6]位置,则用二分法查找该元素时所需要比较的数组元素序列为。

7.从有序表(12,18,30,43,56,78,82,95)中分别二分查找43和56时,其查找长度分别为____和____。

3.假定对长度n=50的有序表进行二分查找,则对应的判定树高度为____,判定树中前5层的结点数为____,最后一层的结点数为____。

4.利用逐点插入法建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉排序树以后,查找元素35要进行( )元素间的比较。

A、4次

B、5次

C、7次

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

A.d

B.d+1

C.(d+1)/m

D.(d+1)%m

7.若根据查找表建立长度为m的闭散列表,采用二次探测法处理冲突,假定对一个元素第一次计算的散列地址为d,则第四次计算的散列地址为( )。

A.(d+1)%m

B.(d-1)%m

C.(d+4)%m

D.(d-4)%m 7.在采用线性探测法处理冲突的闭散列表上,假定装填因子α的值为0.5,则查找任一元素的平均查找长度为( )。

A、1

B、1.5

C、2

D、2.5 7.在采用链接法处理冲突的开散列表上,假定装填因子α的值为4,则查找任一元素的平均查找长度为( )。

A、3

B、3.5

C、4

D、2.5 38.设一个闭散列表的容量为m,用线性控测法解决冲突,要插入一个键值,若插入成

功,至多要进行______次比较。

39.假定要对长度n=100的线性表进行散列存储,并采用链接法处理冲突,则对于长度m=20的开散列表,每个散列地址的单链表的长度平均为____。

44.在采用线性探测法处理冲突的闭散列表中,假定装填因子为α,则进行成功查找的平均查找长度为____。

45.二次探测法处理冲突,闭散列表的长度为m,若散列地址为d的单元冲突,则以后第五个探查地址为____。

42.在开散列表中插入一个元素的时间复杂性为____,查找一个元素的时间复杂性为

____,假定装填因子为 。

=》较深

3.以二分查找方法从长度为n的有序表中查找一个元素时,平均查找长度约等于____,时间复杂性为____。

5.在高度为4的在A VL树中,最少的结点数是( )。

A、7

B、6

C、5

D、4 21.在一棵高度为5的理想平衡树中,最少含有_____个结点,最多含有_____个结点。28.对于一棵含有n个关键字的m阶B_树,其最小高度为____,最大高度为____。29.已知一棵3阶B_树中含有50个关键字,则该树的最小高度为____,最大高度为____。30.在一棵B_树中,所有叶子结点都处在____上,所有叶子结点中空指针等于所有____总数加1。

32.在对m阶B_树插入元素的过程中,每向一个结点插入一个索引项(叶子结点中的索引项为关键字和空指针)后,若该结点的索引项数等于_______个,则必须把它分裂为________个结点。

26.对m阶B_树,每个非根结点的关键字数目最少为____个,其子树数目最少为____。31.对m阶B-树,若某结点因删除关键字而导致结点合并,则该结点中原有的关键字的个数是_______。

33.在从m阶的B_树删除元素的过程中,当一个结点被删除掉一个索引项后,所含索引项数等于________个,并且它的左、右兄弟结点中的索引项数均等于________个,则必须进行结点合并。

35.从一棵B_树删除元素的过程中,若最终引起树根结点的合并,则新树比原树的高度________。

数据结构第一章试题

Chap1 一、选择题 1.算法的计算量的大小称为计算的()。 A.效率 B.复杂性 C.现实性 D.难度 2.计算机算法指的是(1),它必须具备(2)这三个特性。 (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.在下面的程序段中,对x的赋值语句的频度为() FOR i:=1TO n DO FOR j:=1TO n DO x:=x+1; n) A.O(2n)B.O(n)C.O(n2)D.O(log 2 7.程序段FOR i:=n-1DOWNTO1DO FOR j:=1TO i DO IF A[j]>A[j+1] THEN A[j]与A[j+1]对换; 其中n为正整数,则最后一行的语句频度在最坏情况下是()。 A.O(n) B.O(nlogn) C.O(n3) D.O(n2) 8.以下哪个数据结构不是多型数据类型() A.栈B.广义表C.有向图D.字符串 9.以下数据结构中,()是非线性数据结构 A.树B.字符串C.队D.栈 二、判断题 1.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。() 2.算法可以用不同的语言描述,如果用C语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。() 3.程序一定是算法。() 4.数据的物理结构是指数据在计算机内的实际存储形式。() 5.数据结构的抽象操作的定义与具体实现有关。() 6.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。()

数据结构第1章作业

第1章绪论 一、选择题 1. 算法的计算量的大小称为计算的()。 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于() A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(1),它必须具备(2)这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 4.一个算法应该是()。 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C. 5. 下面关于算法说法错误的是() A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是() (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为()两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 8.以下与数据的存储结构无关的术语是()。 A.循环队列 B. 链表 C. 哈希表 D. 栈 9.以下数据结构中,哪一个是线性结构()? A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串 10.以下那一个术语与数据的存储结构无关?() A.栈 B. 哈希表 C. 线索树 D. 双向链表 11.在下面的程序段中,对x的赋值语句的频度为() FOR i:=1 TO n DO FOR j:=1 TO n DO x:=x+1; A. O(2n) B.O(n) C.O(n2) D.O(log2n) 12.程序段 FOR i:=n-1 DOWNTO 1 DO FOR j:=1 TO i DO IF A[j]>A[j+1] THEN A[j]与A[j+1]对换;

考研数据结构必须掌握的知识点与算法-打印版

《数据结构》必须掌握的知识点与算法 第一章绪论 1、算法的五个重要特性(有穷性、确定性、可行性、输入、输出) 2、算法设计的要求(正确性、可读性、健壮性、效率与低存储量需求) 3、算法与程序的关系: (1)一个程序不一定满足有穷性。例操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。因此,操作系统不是一个算法。 (2)程序中的指令必须是机器可执行的,而算法中的指令则无此限制。算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。 (3)一个算法若用程序设计语言来描述,则它就是一个程序。 4、算法的时间复杂度的表示与计算(这个比较复杂,具体看算法本身,一般关心其循环的次数与N的关系、函数递归的计算) 第二章线性表 1、线性表的特点: (1)存在唯一的第一个元素;(这一点决定了图不是线性表) (2)存在唯一的最后一个元素; (3)除第一个元素外,其它均只有一个前驱(这一点决定了树不是线性表) (4)除最后一个元素外,其它均只有一个后继。 2、线性表有两种表示:顺序表示(数组)、链式表示(链表),栈、队列都是线性表,他们都可以用数组、链表来实现。 3、顺序表示的线性表(数组)地址计算方法: (1)一维数组,设DataType a[N]的首地址为A0,每一个数据(DataType类型)占m个字节,则a[k]的地址为:A a[k]=A0+m*k(其直接意义就是求在数据a[k]的前面有多少个元素,每个元素占m个字节) (2)多维数组,以三维数组为例,设DataType a[M][N][P]的首地址为A000,每一个数据(DataType 类型)占m个字节,则在元素a[i][j][k]的前面共有元素个数为:M*N*i+N*j+k,其其地址为: A a[i][j][k]=A000+m*(M*N*i+N*j+k); 4、线性表的归并排序: 设两个线性表均已经按非递减顺序排好序,现要将两者合并为一个线性表,并仍然接非递减顺序。可见算法2.2 5、掌握线性表的顺序表示法定义代码,各元素的含义; 6、顺序线性表的初始化过程,可见算法2.3 7、顺序线性表的元素的查找。 8、顺序线性表的元素的插入算法,注意其对于当原来的存储空间满了后,追加存储空间(就是每次增加若干个空间,一般为10个)的处理过程,可见算法2.4 9、顺序线性表的删除元素过程,可见算法2.5 10、顺序线性表的归并算法,可见算法2.7 11、链表的定义代码,各元素的含义,并能用图形象地表示出来,以利分析; 12、链表中元素的查找 13、链表的元素插入,算法与图解,可见算法2.9 14、链表的元素的删除,算法与图解,可见算法2.10 15、链表的创建过程,算法与图解,注意,链表有两种(向表头生长、向表尾生长,分别用在栈、队列中),但他们的区别就是在创建时就产生了,可见算法2.11 16、链表的归并算法,可见算法2.12 17、建议了解所谓的静态单链表(即用数组的形式来实现链表的操作),可见算法2.13 18、循环链表的定义,意义 19、循环链表的构造算法(其与单链表的区别是在创建时确定的)、图解

数据结构第一章课后习题与答案

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

2. 选择题 ⑴ 顺序存储结构中数据元素之间的逻辑关系是由( )表示的,链接存储结构中的数据元素之间的逻辑关系是由( )表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。 ⑵ 假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。则表示该遗产继承关系的最合适的数据结构应该是( )。 A 树 B 图 C 线性表 D 集合 【解答】B 【分析】将丈夫、妻子和子女分别作为数据元素,根据题意画出逻辑结构图。 ⑶ 算法指的是( )。 A 对特定问题求解步骤的一种描述,是指令的有限序列。 B 计算机程序 C 解决问题的计算方法 D 数据处理 【解答】A 【分析】计算机程序是对算法的具体实现;简单地说,算法是解决问题的方法;数据处理是通过算法完成的。所以,只有A是算法的准确定义。 ⑷ 下面( )不是算法所必须具备的特性。 A 有穷性 B 确切性 C 高效性 D 可行性 【解答】C 【分析】高效性是好算法应具备的特性。 ⑸ 算法分析的目的是( ),算法分析的两个主要方面是( )。 A 找出数据结构的合理性 B 研究算法中输入和输出的关系 C 分析算法的效率以求改进 D 分析算法的易读性和文档性 E 空间性能和时间性能 F 正确性和简明性 G 可读性和文档性 H 数据复杂性和程序复杂性

数据结构试题及答案

数据结构试题及答案 数据结构试题(,)参考答案班别学号姓名成绩一、单项选择(每小题2分,共24分) 1.若某线性表的常用操作是取第i个元素及其前趋元素,则采用( A )存储方式最节省时间 A.顺序表 B.单链表 C.双链表 D.单向循环 B ) 2.串是任意有限个( A.符号构成的序列 B.字符构成的序列 C.符号构成的集合 D.字符构成的集合 3.设矩阵A(aij,1<=i,j<=10)的元素满足: aij<>0(i>=j,1<=i,j<=10),aij =0 (i

A.64 B.63 C.31 D.32 7.将含100个结点的完全二叉树从根这一层开始,每层从左至右依次对结点编号,根结点的编号为1。编号为47的结点X的双亲的编号为( C ) A.24 B.25 C.23 D.2无法确定 8.设有一个无向图G=(V,E)和G'=(V',E'),如果G'为G的生成树,则下面不正确的说法是( D ) A.G'为G的子图 B.G'为G的一个无环子图 C.G'为G的极小连通子图且V'=V D.G'为G的连通分量 1 9.用线性探测法查找闭散列上,可能要探测多个散列地址,这些位置上的键值( D ) A.一定都是同义词 B.一定都不是同义词 C.都相同 D.不一定都是同义词 10.二分查找要求被查找的表是( C ) A.键值有序的链接表 B.链接表但键值不一定有序表 C.键值有序的顺序表 D.顺序表但键值不一定有序表 11.当初始序列已经按键值有序,用直接插入法对其进行排序,需要比较的次数为( B ) 2 A. n B. n-1 C. logn D. nlogn 22 12.堆是一个键值序列{K1,K2,...,Ki,...,Kn},对i=1,2,...,n/2 ,满足 ( A ) ? ? A. Ki<=K2i且Ki<=K2i+1(2i+1<=n) B.Ki

(完整版)非常实用的数据结构知识点总结

数据结构知识点概括 第一章概论 数据就是指能够被计算机识别、存储和加工处理的信息的载体。 数据元素是数据的基本单位,可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。 数据结构的定义: ·逻辑结构:从逻辑结构上描述数据,独立于计算机。·线性结构:一对一关系。 ·线性结构:多对多关系。 ·存储结构:是逻辑结构用计算机语言的实现。·顺序存储结构:如数组。 ·链式存储结构:如链表。 ·索引存储结构:·稠密索引:每个结点都有索引项。 ·稀疏索引:每组结点都有索引项。 ·散列存储结构:如散列表。 ·数据运算。 ·对数据的操作。定义在逻辑结构上,每种逻辑结构都有一个运算集合。 ·常用的有:检索、插入、删除、更新、排序。 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。 ·结构类型:由用户借助于描述机制定义,是导出类型。 抽象数据类型ADT:·是抽象数据的组织和与之的操作。相当于在概念层上描述问题。 ·优点是将数据和操作封装在一起实现了信息隐藏。 程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。算法取决于数据结构。 算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。 评价算法的好坏的因素:·算法是正确的; ·执行算法的时间; ·执行算法的存储空间(主要是辅助存储空间); ·算法易于理解、编码、调试。 时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。 渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。 评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。 算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。 时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O (n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

数据结构第1阶段练习题

江南大学现代远程教育第一阶段练习题及答案 考试科目:《数据结构》第一章至第四章(总分100分) ______________学习中心(教学点)批次:层次: 专业:学号:身份证号: 姓名:得分: 一、选择题(每题3分,共30分) 1、在树形结构中,数据元素间存在()的关系。 A、一对一B、一对多C、多对多D、除同属一个集合外别无关系 2、下列说法中错误的是()。 A、数据对象是数据的子集 B、数据元素间关系在计算机中的映象即为数据的存储结构 C、非顺序映象的特点是借助指示元素存储地址的指针来表示数据元素间逻辑关系 D、抽象数据类型指一个数学模型及定义在该模型上的一组操作 3、下列不属算法特性的是()。 A、有穷性B、确定性C、零或多个输入D、健壮性 4、在长为n的顺序表中删除一个数据元素,平均需移动()个数据元素。 A、n B、n-1 C、n/2 D、(n-1)/2 5、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。 A、顺序表B、双链表C、带头结点的双向循环链表D、单循环链表 6、在一个可存放n个数据元素的顺序栈中,假设以高地址端为栈底,以top为栈顶指针,当向栈中压入一个数据元素时,top的变化是()。 A、不变B、top=n C、top++ D、top-- 7、设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则删除一个结点的操作是()。 A、rear=front->next B、rear=rear->next C、front=front->next D、front=rear->next 8、判定一个栈顶指针为S且不带头结点的链栈为空栈的条件是()。 A、S B、S->next C、S->next==NULL D、!S 9、设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则判定该队中只有一个结点的条件是()。 A、front->next B、rear->next C、front==rear D、front!=rear 10、串的长度是指()。

数据结构试题答案

第一章概论 一、选择题 1、研究数据结构就是研究(D )。 A. 数据的逻辑结构 B. 数据的存储结构 C. 数据的逻辑结构和存储结构 D. 数据的逻辑结构、存储结构及其基本操作(研究非数值计算的程序设计问题中,计算机操作对象以及他们之间的关系和操作) 2、算法分析的两个主要方面是( A )。 A. 空间复杂度和时间复杂度 B. 正确性和简单性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 3、具有线性结构的数据结构是( D )。(线性结构就是:在非空有限集合中,存在为一个被称为第一个的数据元素和最后一个元素,有除了第一个元素,集合中每一个元素均只有一个前驱,除了最后一个元素有唯一后继)(链表、栈、队列、数组、串) A. 图 B. 树 C. 广义表(线性表的推广) D. 栈 4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B )等5个特性。 A. 可执行性、可移植性和可扩充性 B. 可执行性、有穷性和确定性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是( C )。 for(i=0;i

6、算法是(D )。为了解决某一问题而规定的一个有限长的操作序列 A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示(C )。 A. O(n) B. O(nlog2n) C. O(n2) D. O(log2n) 8、下面程序段的时间复杂度为( C )。 i=1; while(i<=n) i=i*3; A. O(n) B. O(3n) C. O(log3n) D. O(n3) 9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的(B )和运算等的学科。(关系和操作) A. 结构 B. 关系 C. 运算 D. 算法 10、下面程序段的时间复杂度是( A )。 i=s=0; while(s

数据结构课程作业

数据结构课程作业_A 交卷时间:2017-08-09 10:08:51 一、单选题 1. (7分)设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置脚注(10)表示用10进制表示。 A. 688 B. 678 C. 692 D. 696 纠错 得分: 7 知识点:第五章 展开解析 答案 C 解析第五章第二节综合题目 2. (7分)若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( ) A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,3 纠错 得分: 0 知识点:第九章 展开解析 答案 D 解析第九章第一节有序表的查找

(7分)设某完全无向图中有n个顶点,则该完全无向图中有()条边。 A. n(n-1)/2 B. n(n-1) C. n2 D. n2-1 纠错 得分: 7 知识点:第七章 展开解析 答案 A 解析第七章第一节综合题目 4. (7分)若在任意一棵二叉树中,有n0个叶子结点,有n2个度为2的结点,则:n0=_____ A. n2+1 B. n2-1 C. n2+2 D. n2-2 纠错 得分: 7 知识点:第六章 展开解析 答案 A 解析第六章第二节二叉树的性质 5. (7分)栈的插入和删除操作在()进行。 A. 栈顶 B. 栈底 C. 任意位置 D. 指定位置

得分: 7 知识点:第三章 展开解析 答案 A 解析第三章第一节栈的表示和实现 6. (7分)设有序表中有1000个元素,则用二分查找查找元素X最多需要比较()次。 A. 25 B. 10 C. 7 D. 1 纠错 得分: 7 知识点:第九章 展开解析 答案 B 解析第九章第一节有序表的查找 7. (7分)设某棵二叉树的高度为10,则该二叉树上叶子结点最多有()。 A. 20 B. 256 C. 512 D. 1024 纠错 得分: 7 知识点:第六章 展开解析 答案 C 解析第六章第六节二叉树的性质

数据结构复习要点(整理版).docx

第一章数据结构概述 基本概念与术语 1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。 2. 数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。 (补充:一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。 ) 3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。(有时候也 叫做属性。) 4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 (1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。 数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。 依据数据元素之间的关系,可以把数据的逻辑结构分成以下几种: 1. 集合:数据中的数据元素之间除了“同属于一个集合“的关系以外,没有其他关系。 2. 线性结构:结构中的数据元素之间存在“一对一“的关系。若结构为非空集合,则除了第一个元素之外,和最后一个元素之外,其他每个元素都只有一个直接前驱和一个直接后继。 3. 树形结构:结构中的数据元素之间存在“一对多“的关系。若数据为非空集,则除了第一个元素 (根)之外,其它每个数据元素都只有一个直接前驱,以及多个或零个直接后继。 4. 图状结构:结构中的数据元素存在“多对多”的关系。若结构为非空集,折每个数据可有多个(或零个)直接后继。 (2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。想要计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。逻辑结构可以映射为以下两种存储结构: 1. 顺序存储结构:把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。 2. 链式存储结构:借助指针表达数据元素之间的逻辑关系。不要求逻辑上相邻的数据元素物理位置上也相邻。 5. 时间复杂度分析:1.常量阶:算法的时间复杂度与问题规模n 无关系T(n)=O(1) 2. 线性阶:算法的时间复杂度与问题规模 n 成线性关系T(n)=O(n) 3. 平方阶和立方阶:一般为循环的嵌套,循环体最后条件为i++ 时间复杂度的大小比较: O(1)< O(log 2 n)< O(n )< O(n log 2 n)< O(n2)< O(n3)< O(2 n )

数据结构课后习题及解析第一章

第一章习题 一、问答题 1.什么是数据结构? 2.叙述四类基本数据结构的名称与含义。 3.叙述算法的定义与特性。 4.叙述算法的时间复杂度。 5.叙述数据类型的概念。 6.叙述线性结构与非线性结构的差别。 7.叙述面向对象程序设计语言的特点。 8.在面向对象程序设计中,类的作用是什么? 9.叙述参数传递的主要方式及特点。 10.叙述抽象数据类型的概念。 二、判断题(在各题后填写“√”或“×”) 1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。() 2.算法就是程序。() 3.在高级语言(如C或 PASCAL)中,指针类型是原子类型。() 三、计算下列程序段中X=X+1的语句频度 for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x=x+1; 四、试编写算法,求一元多项式P n (x)=a +a 1 x+a 2 x2+a 3 x3+…a n x n的值P n (x ),并确定算法中的每 一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用 求幂函数。注意:本题中的输入a i (i=0,1,…,n),x和n,输出为P n (x )。通常算法的输入和输 出可采用下列两种方式之一: (1)通过参数表中的参数显式传递。

(2)通过全局变量隐式传递。 试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。 实习题 设计实现抽象数据类型“有理数”。基本操作包括有理数的加法、减法、乘法、除法,以及求有理数的分子、分母。 第一章答案 1.3计算下列程序中x=x+1的语句频度 for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x=x+1; 【解答】x=x+1的语句频度为: T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/6 1.4试编写算法,求p n(x)=a0+a1x+a2x2+…….+a n x n的值p n(x0),并确定算法中每一语句的执 行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。注意:本题中的输入为a i(i=0,1,…n)、x和n,输出为P n(x0)。算法的输入和输出采用下列方法(1)通过参数表中的参数显式传递(2)通过全局变量隐式传递。讨论两种方法的优缺点,并在算法中以你认为较好的一种实现输入输出。 【解答】 (1)通过参数表中的参数显式传递 优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。 缺点:形参须与实参对应,且返回值数量有限。 (2)通过全局变量隐式传递 优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗

数据结构作业第1章

第1章绪论 1. 填空 (1)()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 (2)()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 (3)从逻辑关系上讲,数据结构主要分为()、()、()和()。 (4)数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。 (5)算法具有五个特性,分别是()、()、()、()、()。 (6)在一般情况下,一个算法的时间复杂度是()的函数。 (7)设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链式存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 ⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。则表示该遗产继承关系的最合适的数据结构应该是()。 A 树 B 图 C 线性表 D 集合 ⑶算法指的是()。 A 对特定问题求解步骤的一种描述,是指令的有限序列。 B 计算机程序 C 解决问题的计算方法 D 数据处理 ⑷下面()不是算法所必须具备的特性。 A 有穷性 B 确切性 C 高效性 D 可行性 ⑸算法分析的目的是(),算法分析的两个主要方面是()。 A 找出数据结构的合理性 B 研究算法中输入和输出的关系 C 分析算法的效率以求改进 D 分析算法的易读性和文档性 E 空间性能和时间性能 F 正确性和简明性 G 可读性和文档性H 数据复杂性和程序复杂性 3. 判断题 (1)算法的时间复杂度都要通过算法中的基本语句的执行次数来确定。 (2)每种数据结构都具备三个基本操作:插入、删除和查找。 (3)逻辑结构与数据元素本身的内容和形式无关。 (4)基于某种逻辑结构之上的基本操作,其实现是唯一的。 4. 分析以下各程序段,并用大O记号表示其执行时间。

数据结构练习题(第一章)

第一章习题 一.填空题 1、数据结构被形式地定义为(D, R),其中D是的有限集合,R是D上的有限集合。 2、数据结构按逻辑结构可分为两大类,它们分别是和。 3、线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。 4、一个算法的效率可分为效率和效率。 5、简单地说,一个算法所进行的计算次数的多少称为,一个算法所需要辅助存储空间的多少称之为。 6、根据数据元素之间关系的不同特性,通常有四类基本结构,它们是集合、、、。 二.选择题 1、算法分析的目的是() A、找出数据结构的合理性 B、研究算法中的输入和输出的关系 C、分析算法的效率以求改进 D、分析算法的易懂性和文档性 2、算法分析的两个主要方面是() A、空间复杂性和时间复杂性 B、正确性和简明性 C、可读性和文档性 D、数据复杂性和程序复杂性 3、计算机算法指的是() A、计算方法 B、排序方法 C、解决问题的有限运算序列 D、调度方法 4、计算机算法必须具备输入、输出和()等5个特性。 A、可行性、可移植性和可扩充性 B、可行性、确定性和有穷性 C、确定性、有穷性和稳定性 D、易读性、稳定性和安全性 5、数据元素是数据的基本单位,其内()数据项。 A、只能包含一个 B、不包含 C、可以包含多个 D、必须包含多个 6、逻辑关系是指数据元素间的() A、类型B、存储方式C、结构D、数据项 7、数据结构有()种基本逻辑结构。 A、1 B、2 C、3 D、4 8、下列四种基本的逻辑结构中,数据元素之间关系最弱的是()。 A、集合 B、线性结构 C、树形结构 D、图状结构 9、一个存储结构点存储一个()。 A、数据项 B、数据元素 C、数据结构 D、数据类型 10、某算法的时间复杂度为O(2n),表明该算法的() A、问题规模是2n B、执行时间等于2n C、执行时间与2n成正比 D、问题规模与2n成正比 11、算法执行时间一般与()无关。 A、问题规模大小 B、计算机的档次 C、程序设计语言的种类或版本 D、算法设计者的 水平 12、算法分析的主要任务是分析算法() A、是否具有较好的可读性 B、是否存在语法错误 C、功能是否符合设计要求 D、执 行时间和问题规模之间的关系。 13、下列时间复杂度中最坏的是()

数据结构第一章练习题

《数据结构》第一章练习题 1、单项选择题 1.1数据结构是一门非数值计算的程序设计问题中计算机的( )以及它们之间的( )和运算等的学科。 ①A 数据元素 B 计算方法 C 逻辑存储 D 数据映像 ②A 结构 B 关系 C 运算 D 算法 1.2数据结构被形式的定义为(K,R ),其中K 是( )的有限集,R 是K 上的( )有限集。 ①A 算法B 数据元素C 数据操作D 逻辑结构 ②A 操作B 映像C 存储D 关系 1.3在数据结构中,从逻辑上可以把数据结构分为( )。 A 动态结构和静态结构 B 紧凑结构和非紧凑结构 C 线性结构和非线性结构 D 内部结构和外部结构 1.4数据结构在计算机内存中的表示是指( )。 A 数据的存储结构 B 数据结构 C 数据的逻辑结构 D 数据元素之间的关系 1.5在数据结构中,与所使用的计算机无关的是数据的( )结构。 A 逻辑 B 存储 C 逻辑和存储 D 物理 1.6算法分析的目的是(),算法分析的两个主要方面是( )。①A 找出数据结构的合理性 B 研究算法中输入与输出的关系 C 分析算法效率以求改进 D 分析算法的易懂性和文档性 ②A 空间复杂度和时间复杂度 B 正确性和简明性 C 可读性和文档性 D 数据复杂性和程序复杂性 1.7计算机算法是指( ),它必须具备输入、输出和( )等5个特性。 ①A 计算方法 B 排序方法 C 解决问题的有限运算序列 D 调度方法 ②A 可行性、可移植性和可扩充性 B 可行性、确定性和有穷性 C 确定性、有穷性和稳定性 D 易读性、稳定性和安全性 1.8在以下的叙述中,正确的是( )。 A 线性表和线性存储结构优于链表存储结构 B 二维数组是其数据元素为线性表的线性表 C 栈的操作方式是先进先出 D 队列的操作方式是先进后出 1.9在决定选择何种存储结构时,一般不考虑( )。 、管路敷设技术通过管线不仅可以解决吊顶层配置不规范高中资料试卷问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行 高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况 ,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。

数据结构考试题库含答案

数据结构习题集含答案 目录

选择题 第一章绪论 1.数据结构这门学科是针对什么问题而产生的(A ) A、针对非数值计算的程序设计问题 B、针对数值计算的程序设计问题 C、数值计算与非数值计算的问题都针对 D、两者都不针对 2.数据结构这门学科的研究内容下面选项最准确的是(D ) A、研究数据对象和数据之间的关系 B、研究数据对象 C、研究数据对象和数据的操作 D、研究数据对象、数据之间的关系和操作 3.某班级的学生成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那 么下面关于数据对象、数据元素、数据项描述正确的是(C ) A、某班级的学生成绩表是数据元素,90分是数据项 B、某班级的学生成绩表是数据对象,90分是数据元素 C、某班级的学生成绩表是数据对象,90分是数据项 D、某班级的学生成绩表是数据元素,90分是数据元素 4.*数据结构是指(A )。 A、数据元素的组织形式 B、数据类型 C、数据存储结构 D、数据定义 5.数据在计算机存储器内表示时,物理地址与逻辑地址不相同,称之为(C )。 A、存储结构 B、逻辑结构 C、链式存储结构 D、顺序存储结构 6.算法分析的目的是(C ) A、找出数据的合理性 B、研究算法中的输入和输出关系 C、分析算法效率以求改进 D、分析算法的易懂性和文档型性

7.算法分析的主要方法(A )。 A、空间复杂度和时间复杂度 B、正确性和简明性 C、可读性和文档性 D、数据复杂性和程序复杂性 8.计算机内部处理的基本单元是(B ) A、数据 B、数据元素 C、数据项 D、数据库 9.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储 比顺序存储要(B )。 A、低 B、高 C、相同 D、不好说 10.算法的时间复杂度取决于( C ) A 、问题的规模B、待处理数据的初始状态 C、问题的规模和待处理数据的初始状态 D、不好说 11.数据结构既研究数据的逻辑结构,又研究物理结构,这种观点(B )。 A、正确 B、错误 C、前半句对,后半句错 D、前半句错,后半句对 12.在数据结构中,从逻辑上可以把数据结构分成( C ) A、动态结构和静态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 13.线性表的顺序存储结构是一种( )的存储结构,线性表的链式存储结构是一种( A ) 存储结构。 A、随机存取 B、顺序存取 C、索引存取 D、散列存取 14.*下列程序的时间复杂度是(A ) for (i=1; i<=n; ++i){ for (j=1; j<=n; ++j){ c [i][j]=0;

大学数据结构期末知识点重点总结

第一章概论 1.数据结构描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、存储结构和运算 2.数据的逻辑结构是从具体问题抽象出来的数学模型,反映了事物的组成结构及事物之间的逻辑关系 可以用一组数据(结点集合K)以及这些数据之间的一组二元关系(关系集合R)来表示:(K, R) 结点集K是由有限个结点组成的集合,每一个结点代表一个数据或一组有明确结构的数据 关系集R是定义在集合K上的一组关系,其中每个关系r(r∈R)都是K×K上的二元关系 3.数据类型 a.基本数据类型 整数类型(integer)、实数类型(real)、布尔类型(boolean)、字符类型(char)、指针类型(pointer)b.复合数据类型 复合类型是由基本数据类型组合而成的数据类型;复合数据类型本身,又可参与定义结构更为复杂的结点类型 4.数据结构的分类:线性结构(一对一)、树型结构(一对多)、图结构(多对多) 5.四种基本存储映射方法:顺序、链接、索引、散列 6.算法的特性:通用性、有效性、确定性、有穷性 7.算法分析:目的是从解决同一个问题的不同算法中选择比较适合的一种,或者对原始算法进行改造、加工、使其优化 8.渐进算法分析 a.大Ο分析法:上限,表明最坏情况 b.Ω分析法:下限,表明最好情况 c.Θ分析法:当上限和下限相同时,表明平均情况 第二章线性表 1.线性结构的基本特征 a.集合中必存在唯一的一个“第一元素” b.集合中必存在唯一的一个“最后元素” c.除最后元素之外,均有唯一的后继 d.除第一元素之外,均有唯一的前驱 2.线性结构的基本特点:均匀性、有序性 3.顺序表 a.主要特性:元素的类型相同;元素顺序地存储在连续存储空间中,每一个元素唯一的索引值;使用常数作为向量长度 b. 线性表中任意元素的存储位置:Loc(ki) = Loc(k0) + i * L(设每个元素需占用L个存储单元) c. 线性表的优缺点: 优点:逻辑结构与存储结构一致;属于随机存取方式,即查找每个元素所花时间基本一样 缺点:空间难以扩充 d.检索:ASL=【Ο(1)】 e.插入:插入前检查是否满了,插入时插入处后的表需要复制【Ο(n)】 f.删除:删除前检查是否是空的,删除时直接覆盖就行了【Ο(n)】 4.链表 4.1单链表 a.特点:逻辑顺序与物理顺序有可能不一致;属于顺序存取的存储结构,即存取每个数据元素所花费的时间不相等 b.带头结点的怎么判定空表:head和tail指向单链表的头结点 c.链表的插入(q->next=p->next; p->next=q;)【Ο(n)】 d.链表的删除(q=p->next; p->next = q->next; delete q;)【Ο(n)】 e.不足:next仅指向后继,不能有效找到前驱 4.2双链表 a.增加前驱指针,弥补单链表的不足 b.带头结点的怎么判定空表:head和tail指向单链表的头结点 c.插入:(q->next = p->next; q->prev = p; p->next = q; q->next->prev = q;) d.删除:(p->prev->next = p->next; p->next->prev = p->prev; p->prev = p->next = NULL; delete p;) 4.3顺序表和链表的比较 4.3.1主要优点 a.顺序表的主要优点 没用使用指针,不用花费附加开销;线性表元素的读访问非常简洁便利 b.链表的主要优点 无需事先了解线性表的长度;允许线性表的长度有很大变化;能够适应经常插入删除内部元素的情况 4.3.2应用场合的选择 a.不宜使用顺序表的场合 经常插入删除时,不宜使用顺序表;线性表的最大长度也是一个重要因素 b.不宜使用链表的场合 当不经常插入删除时,不应选择链表;当指针的存储开销与整个结点内容所占空间相比其比例较大时,应该慎重选择 第三章栈与队列 1.栈 a.栈是一种限定仅在一端进行插入和删除操作的线性表;其特点后进先出;插入:入栈(压栈);删除:出栈(退栈);插入、删除一端被称为栈顶(浮动),另一端称为栈底(固定);实现分为顺序栈和链式栈两种 b.应用: 1)数制转换 while (N) { N%8入栈; N=N/8;} while (栈非空){ 出栈; 输出;} 2)括号匹配检验 不匹配情况:各类括号数量不同;嵌套关系不正确 算法: 逐一处理表达式中的每个字符ch: ch=非括号:不做任何处理 ch=左括号:入栈 ch=右括号:if (栈空) return false else { 出栈,检查匹配情况, if (不匹配) return false } 如果结束后,栈非空,返回false 3)表达式求值 3.1中缀表达式: 计算规则:先括号内,再括号外;同层按照优先级,即先乘*、除/,后加+、减-;相同优先级依据结合律,左结合律即为先左后右 3.2后缀表达式: <表达式> ::= <项><项> + | <项><项>-|<项> <项> ::= <因子><因子> * |<因子><因子>/|<因子> <因子> ::= <常数> ?<常数> ::= <数字>|<数字><常数> <数字> ∷= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 3.3中缀表达式转换为后缀表达式 InfixExp为中缀表达式,PostfixExp为后缀表 达式 初始化操作数栈OP,运算符栈OPND; OPND.push('#'); 读取InfixExp表达式的一项 操作数:直接输出到PostfixExp中; 操作符: 当‘(’:入OPND; 当‘)’:OPND此时若空,则出错;OPND若 非空,栈中元素依次弹出,输入PostfixExpz 中,直到遇到‘(’为止;若为‘(’,弹出即 可 当‘四则运算符’:循环(当栈非空且栈顶不是 ‘(’&& 当前运算符优先级>栈顶运算符优先 级),反复弹出栈顶运算符并输入到 PostfixExp中,再将当前运算符压入栈 3.4后缀表达式求值 初始化操作数栈OP; while (表达式没有处理完) { item = 读取表达式一项; 操作数:入栈OP; 运算符:退出两个操作数, 计算,并将结果入栈} c.递归使用的场合:定义是递归的;数据结构是 递归的;解决问题的方法是递归的 2.队列 a.若线性表的插入操作在一端进行,删除操作 在另一端进行,则称此线性表为队列 b.循环队列判断队满对空: 队空:front==rear;队满: (rear+1)%n==front 第五章二叉树 1.概念 a. 一个结点的子树的个数称为度数 b.二叉树的高度定义为二叉树中层数最大的叶 结点的层数加1 c.二叉树的深度定义为二叉树中层数最大的叶 结点的层数 d.如果一棵二叉树的任何结点,或者是树叶, 或者恰有两棵非空子树,则此二叉树称作满二 叉树 e.如果一颗二叉树最多只有最下面的两层结点 度数可以小于2;最下面一层的结点都集中在 该层最左边的位置上,则称此二叉树为完全二 叉树 f.当二叉树里出现空的子树时,就增加新的、特 殊的结点——空树叶组成扩充二叉树,扩充二 叉树是满二叉树 外部路径长度E:从扩充的二叉树的根到每个 外部结点(新增的空树叶)的路径长度之和 内部路径长度I:扩充的二叉树中从根到每个内 部结点(原来二叉树结点)的路径长度之和 2.性质 a. 二叉树的第i层(根为第0层,i≥0)最多有 2^i个结点 b. 深度为k的二叉树至多有2k+1-1个结点 c. 任何一颗二叉树,度为0的结点比度为2的 结点多一个。n0 = n2 + 1 d. 满二叉树定理:非空满二叉树树叶数等于其 分支结点数加1 e. 满二叉树定理推论:一个非空二叉树的空子 树(指针)数目等于其结点数加1 f. 有n个结点(n>0)的完全二叉树的高度为 ?log2(n+1)?,深度为?log2(n+1)?? g. 对于具有n个结点的完全二叉树,结点按层 次由左到右编号,则有: 1) 如果i = 0为根结点;如果i>0,其父结点 编号是(i-1)/2 2) 当2i+1∈N,则称k是k'的父结点,k'是 的子结点 若有序对∈N,则称k' k″互为兄弟 若有一条由k到达ks的路径,则称k是 的祖先,ks是k的子孙 2.树/森林与二叉树的相互转换 a.树转换成二叉树 加线: 在树中所有兄弟结点之间加一连线 抹线: 对每个结点,除了其最左孩子外, 与其余孩子之间的连线 旋转: 45° b.二叉树转化成树 加线:若p结点是双亲结点的左孩子,则将 的右孩子,右孩子的右孩子, 所有右孩子,都与p的双亲用线连起来 线 调整:将结点按层次排列,形成树结构 c.森林转换成二叉树 将各棵树分别转换成二叉树 将每棵树的根结点用线相连 为轴心,顺时针旋转,构成二叉树型结构 d.二叉树转换成森林 抹线:将二叉树中根结点与其右孩子连线,及 沿右分支搜索到的所有右孩子间连线全部抹 掉,使之变成孤立的二叉树 还原:将孤立的二叉树还原成树 3.周游 a.先根(次序)周游 若树不空,则先访问根结点,然后依次先根周 游各棵子树 b.后根(次序)周游 若树不空,则先依次后根周游各棵子树,然后 访问根结点 c.按层次周游 若树不空,则自上而下自左至右访问树中每个 结点 4.存储结构 “左子/右兄”二叉链表表示法:结点左指针指 向孩子,右结点指向右兄弟,按树结构存储, 无孩子或无右兄弟则置空 5. “UNION/FIND算法”(等价类) 判断两个结点是否在同一个集合中,查找一个 给定结点的根结点的过程称为FIND 归并两个集合,这个归并过程常常被称为 UNION “UNION/FIND”算法用一棵树代表一个集合, 如果两个结点在同一棵树中,则认为它们在同 一个集合中;树中的每个结点(除根结点以外) 有仅且有一个父结点;结点中仅需保存父指针 信息,树本身可以存储为一个以其结点为元素 的数组 6.树的顺序存储结构 a. 带右链的先根次序表示法 在带右链的先根次序表示中,结点按先根次序 顺序存储在一片连续的存储单元中 每个结点除包括结点本身数据外,还附加两个 表示结构的信息字段,结点的形式为: info是结点的数据;rlink是右指针,指向结点 的下一个兄弟;ltag是一个左标记,当结点没 有子结点(即对应二叉树中结点没有左子结点 时),ltag为1,否则为0 b. 带双标记位的先根次序表示法 规定当结点没有下一个兄弟(即对应的二叉树 中结点没有右子结点时)rtag为1,否则为0 c. 带双标记位的层次次序表示法 结点按层次次序顺序存储在一片连续的存储单 元中 第七章图 1.定义 a.假设图中有n个顶点,e条边: 含有e=n(n-1)/2条边的无向图称作完全图 含有e=n(n-1) 条弧的有向图称作有向完全图 若边或弧的个数e < nlogn,则称作稀疏图, 否则称作稠密图 b. 顶点的度(TD)=出度(OD)+入度(ID) 顶点的出度: 以顶点v为弧尾的弧的数目 顶点的入度: 以顶点v为弧头的弧的数目 c.连通图、连通分量 若图G中任意两个顶点之间都有路径相通,则 称此图为连通图 若无向图为非连通图,则图中各个极大连通子 图称作此图的连通分量 d.强连通图、强连通分量 对于有向图,若任意两个顶点之间都存在一条 有向路径,则称此有向图为强连通图 否则,其各个极大强连通子图称作它的强连通 分量 e.生成树、生成森林 假设一个连通图有n个顶点和e条边,其中n-1 条边和n个顶点构成一个极小连通子图,称该 极小连通子图为此连通图的生成树 对非连通图,则将由各个连通分量构成的生成 树集合称做此非连通图的生成森林 2.存储结构 a.相邻矩阵表示法 表示顶点间相邻关系的矩阵 若G是一个具有n个顶点的图,则G的相邻矩 阵是如下定义的n×n矩阵: A[i,j]=1,若(Vi, Vj)(或)是图G的边 A[i,j]=0,若(Vi, Vj)(或)不是图G的边 b.邻接表表示法 为图中每个顶点建立一个单链表,第i个单链表 中的结点表示依附于顶点Vi的边(有向图中指 以Vi为尾的弧)(建立单链表时按结点顺序建 立) 3.周游 a. 深度优先周游: 从图中某个顶点V0出发,访问此顶点,然后依 次从V0的各个未被访问的邻接点出发,深度优 先搜索遍历图中的其余顶点,直至图中所有与 V0有路径相通的顶点都被访问到为止 b. 广度优先周游: 从图中的某个顶点V0出发,并在访问此顶点之 后依次访问V0的所有未被访问过的邻接点,随 后按这些顶点被访问的先后次序依次访问它们 的邻接点,直至图中所有与V0有路径相通的顶 点都被访问到为止,若此时图中尚有顶点未被 访问,则另选图中一个未曾被访问的顶点作起 始点,重复上述过程,直至图中所有顶点都被 访问到为止 4.拓扑排序 拓扑排序的方法是:1)选择一个入度为0的顶 点且输出之 2)从图中删掉此顶点及所有的出边 3)回到第1步继续执行,直至图空或者图不空 但找不到无前驱(入度为0)的顶点为止 5.单源最短路径(Dijkstra算法) 6.每对顶点间的最短路径(Floyd算法) 7.最小生成树 a.Prim算法 b.Kruskal算法 c.两种算法比较:Prim算法适合稠密图, Kruskal算法适合稀疏图 第八章内排序 算法最大时间平均时间 直接插入排 序 Θ(n2) Θ(n2) 冒泡排序Θ(n2) Θ(n2) 直接选择排 序 Θ(n2) Θ(n2) Shell排序Θ(n3/2) Θ(n3/2) 快速排序Θ(n2) Θ(nlog n) 归并排序Θ(nlog n) Θ(nlog n) 堆排序Θ(nlog n) Θ(nlog n) 桶式排序Θ(n+m) Θ(n+m) 基数排序Θ(d·(n+r)) Θ(d·(n+r)) 最小时间S(n) 稳定性 Θ(n) Θ(1) 稳定 Θ(n) Θ(1) 稳定 Θ(n2) Θ(1) 不稳定 Θ(n3/2) Θ(1) 不稳定 Θ(nlog n) Θ(log n) 不稳定 Θ(nlog n) Θ(n) 稳定 Θ(nlog n) Θ(1) 不稳定 Θ(n+m) Θ(n+m) 稳定 Θ(d·(n+r)) Θ(n+r) 稳定 第十章检索 1.平均检索长度(ASL)是待检索记录集合中元 素规模n的函数,其定义为: ASL= Pi为检索第i个元素的概率;Ci为找到第i个元 素所需的比较次数 2.散列 a.除余法 用关键码key除以M(取散列表长度),并取余 数作为散列地址 散列函数为:hash(key) =key mod M b.解决冲突的方法 开散列方法:把发生冲突的关键码存储在散列 表主表之外(在主表外拉出单链表) 闭散列方法:把发生冲突的关键码存储在表中 另一个位置上 c.线性探查 基本思想:如果记录的基位置存储位置被占用, 就在表中下移,直到找到一个空存储位置;依 次探查下述地址单元:d0+1,d0+2,...,m-1, 0,1,...,d0-1;用于简单线性探查的探查 函数是:p(K, i) = i d.散列表的检索 1.假设给定的值为K,根据所设定的散列函数h, 计算出散列地址h(K) 2. 如果表中该地址对应的空间未被占用,则检 索失败,否则将该地址中的值与K比较 3. 若相等则检索成功;否则,按建表时设定的 处理冲突方法查找探查序列的下一个地址,如 此反复下去,直到某个地址空间未被占用(可 以插入),或者关键码比较相等(有重复记录, 不需插入)为止 e.散列表的删除:删除后在删除地点应加上墓 碑(被删除标记) f.散列表的插入:遇到墓碑不停止,知道找到真 正的空位置 第十一章索引技术 1.概念: a.主码:数据库中的每条记录的唯一标识 b.辅码:数据库中可以出现重复值的码 2.B树 a.定义:B树定义:一个m阶B树满足下列条 件: (1) 每个结点至多有m个子结点; (2) 除根和叶外 其它每个结点至少有??个子结点; (3) 根结点至少有两个子结点 例外(空树,or独根) (4) 所有的叶在同一层,可以有??- 1到m-1个 关键码 (5) 有k个子结点的非根结点恰好包含k-1个关 键码 b.查找 在根结点所包含的关键码K1,…,Kj中查找给 定的关键码值(用顺序检索(key少)/二分检索 (key多));找到:则检索成功;否则,确定要查 的关键码值是在某个Ki和Ki+1之间,于是取 pi所指结点继续查找;如果pi指向外部结点, 表示检索失败. c.插入 找到的叶是插入位置,若插入后该叶中关键码 个数

相关文档
相关文档 最新文档