文档库 最新最全的文档下载
当前位置:文档库 › 数据结构第九、十章 作业答案

数据结构第九、十章 作业答案

数据结构第九、十章 作业答案
数据结构第九、十章 作业答案

第九章 查找

一、填空题

1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 。

2. 线性有序表(a 1,a 2,a 3,…,a 256)是从小到大排列的,对一个给定的值k ,用二分法检索

表中与k 相等的元素,在查找不成功的情况下,最多需要检索 8 次。设有100个结点,用二分法查找时,最大比较次数是 7 。

3. 假设在有序线性表a[1..20]上进行折半查找,则比较一次查找成功的结点数为1;比较两

次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ,其下标从小到大依次是1,3,6,8,11,13,16,19______,平均查找长度为 3.7 。

解:显然,平均查找长度=O (log 2n )<5次(25)。但具体是多少次,则不应当按照公式

)1(log 12++=n n n ASL 来计算(即(21×log 221)/20=4.6次并不正确!)。因为这是在假设n =2m -1

的情况下推导出来的公式。应当用穷举法罗列:

全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL =74/20=3.7 !!!

4.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它

将依次与表中元素 28,6,12,20 比较大小。

5. 在各种查找方法中,平均查找长度与结点个数n 无关的查找方法是 散列查找 。

6. 散列法存储的基本思想是由 关键字的值 决定数据的存储地址。

7. 有一个表长为m 的散列表,初始状态为空,现将n (n

8、设一哈希表表长M 为100 ,用除留余数法构造哈希函数,即H (K )=K MOD P (P<=M ), 为使函数具有较好性能,P 应选( 97 )

9、在各种查找方法中,平均查找长度与结点个数无关的是哈希查找法

10、对线性表进行二分查找时,要求线性表必须以 顺序 方式存储,且结点按关键字 有序排列。

11 在分块查找方法中,首先查找索引,然后再查找相应的 块。

12. 顺序查找n 个元素的顺序表,若查找成功,则比较关键字的次数最多为_ n __次;当使用监视哨时,若查找失败,则比较关键字的次数为__ n+1 。

13.在有序表A[1..12]中,采用二分查找算法查等于A[12]的元素,所比较的元素下标依次为_____6,9,11,12 _____。

14. 在有序表A[1..20]中,按二分查找方法进行查找,查找长度为5的元素个数是__5 _

15. 已知二叉排序树的左右子树均不为空,则____左子树______上所有结点的值均小于它的根结点值,____右子树______上所有结点的值均大于它的根结点的值。

16、中序遍历二叉排序树得到的序列是 有序 序列(填有序或无序)。

17、从有序表(10,16,25,40,61,28,80,93)中依次二分查找40和61元素时,其查找长度分别为1 和3 ·

二、单项选择题

( B )1.在表长为n的链表中进行顺序查找,它的平均查找长度为

A. ASL=n; B. ASL=(n+1)/2;

C. ASL=n+1; D. ASL≈log

(n+1)-1

( A )2.折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中元素58,则它将依次与表中比较大小,查找结果是失败。

A.20,70,30,50 B.30,88,70,50 C.20,50 D.30,88,50 ( C )3.对22个记录的有序表作折半查找,当查找失败时,至少需要比较次关键字。

A.3 B.4 C.5 D. 6

( A )4. 链表适用于查找

A.顺序 B.二分法 C.顺序,也能二分法 D.随机

( C )5. 折半搜索与二叉搜索树的时间性能

n) A. 相同 B. 完全不同 C. 有时不相同 D. 数量级都是O(log

2 6.散列表的地址区间为0-17,散列函数为H(K)=K mod 17。采用线性探测法处理冲突,并将关键字序列26,25,72,38,8,18,59依次存储到散列表中。元素59存放在散列表中的地址是( D )。

A. 8 B. 9 C. 10 D. 11

7. 当采用分快查找时,数据的组织方式为 ( B )

A.数据分成若干块,每块内数据有序

B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块

C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块

D. 数据分成若干块,每块(除最后一块外)中数据个数需相同

8. 散列函数有一个共同的性质,即函数值应当以( D )取其值域的每个值。

A. 最大概率

B. 最小概率

C. 平均概率

D. 同等概率

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

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

10、哈希查找中k个关键字具有同一哈希值,若用线性探测法将这k个关键字对应的记录存入哈希表中,至少要进行( )次探测。【西安电子科技大学 1998 一、8 (2分)】

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

11、在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( C ) 型调整以使其平衡。

A. LL

B. LR

C. RL

D. RR

12、二叉查找树的查找效率与二叉树的( C)有关, 在 (B))时其查找效率最低

(1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置

(2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。

13、在顺序表 ( 3, 6, 8, 10, 12, 15, 16, 18, 21, 25, 30 ) 中,用折半法查找关键码值11,所需的关键码比较次数为( C)

A) 2 B) 3 C) 4 D) 5

14、对包含n个元素的哈希表进行查找,平均查找长度为( D)

A) O(log

2n) B) O(n) C) O(nlog

2

n) D) 不直接依赖于n

15、若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( C )。

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

16. 下面关于二分查找的叙述正确的是 ( D )

A. 表必须有序,表可以顺序方式存储,也可以链表方式存储 C. 表必须有序,而且只能从小到大排列

B. 表必须有序且表中数据必须是整型,实型或字符型 D. 表必须有序,且表只能以顺序方式存储

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

A.以顺序方式存储

B.以顺序方式存储,且数据元素有序

C.以链接方式存储

D.以链接方式存储,且数据元素有序

18.适用于折半查找的表的存储方式及元素排列要求为( D )

A.链接方式存储,元素无序 B.链接方式存储,元素有序

C.顺序方式存储,元素无序 D.顺序方式存储,元素有序

19. 用二分(对半)查找表的元素的速度比用顺序法( D )

A.必然快 B. 必然慢 C. 相等 D. 不能确定

20.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( C )

A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减

21. 具有12个关键字的有序表,折半查找的平均查找长度( A )

A. 3.1

B. 4

C. 2.5

D. 5

22. 折半查找的时间复杂性为( D )

A. O(n2)

B. O(n)

C. O(nlogn)

D. O(logn)

23.设顺序线性表的长度为30,分成5块,每块6个元素,如果采用分块查找,则其平均查找长度为(D )。

(A) 6 (B) 11 (C) 5 (D) 6.5

24. 二叉排序树的查找效率与二叉树的( C)有关

A. 高度

B. 结点的多少

C. 树型

D. 结点的位置

25.在等概率情况下,一棵平衡树的ASL为 ( B )

A. O(1)

B. O( log2n )

C. O((log2n)2)

D.O(nlog2n)

26.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( C ) A.(100,80, 90, 60, 120,110,130)

B.(100,120,110,130,80, 60, 90)

C.(100,60, 80, 90, 120,110,130)

D. (100,80, 60, 90, 120,130,110)

27. 在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( C ) 型调整以使其平衡。

A. LL

B. LR

C. RL

D. RR

28、下列二叉排序树中,满足平衡二叉树定义的是(B)

29.下列关于

m阶B-树的说法错误的是

A.根结点至多有m棵子树 B.所有叶子都在同一层次上

C. 非叶结点至少有m/2 (m为偶数)或m/2+1(m为奇数)棵子树

D. 根结点中的数据是有序的

30. 下面关于m阶B树说法正确的是( B )

①每个结点至少有两棵非空子树;②树中每个结点至多有m一1个关键字;

③所有叶子在同一层上; ④当插入一个数据项引起B树结点分裂后,树长高一层。

A.①②③ B. ②③ C. ②③④ D. ③

31. 下面关于B和B+树的叙述中,不正确的是( C )

A. B树和B+树都是平衡的多叉树。

B. B树和B+树都可用于文件的索引结构。

C. B树和B+树都能有效地支持顺序检索。

D. B树和B+树都能有效地支持随机检索。

32、下列叙述中,不符合m阶B树定义要求的是(D)

A.根节点最多有m棵子树 B.所有叶结点都在同一层上

C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接

A、

33、设散列表中有m个存储单元,散列函数H(key)= key % p,则p最好选择(B)。

(A) 小于等于m的最大奇数(B) 小于等于m的最大素数

(C) 小于等于m的最大偶数(D) 小于等于m的最大合数

34、适于对动态查找表进行高效率查找的组织结构是( C )

A.有序表B.分块有序表C.二叉排序树D.线性链表

35、当采用分快查找时,数据的组织方式为 ( B )

A.数据分成若干块,每块内数据有序

B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块

C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块

D. 数据分成若干块,每块(除最后一块外)中数据个数需相同

三、判断题

1、查找相同结点的效率折半查找总比顺序查找高。(× )

2、索引顺序表的特点是块内可无序,块间要有序。(√)

3、在采用线性探测法处理冲突的散列表中,所有同义词在表中一定相邻。( )

4、在平衡二叉树中,任意结点左右子树的高度差(绝对值)不超过1。(√ )

5、若查找表的长度为n,则顺序查找法的平均查找长度为(n+1)/2。(√)

6、折半搜索适用于有序表,包括有序的顺序表和有序的链表。(╳ )

7.采用线性探测法处理散列时的冲突,当从哈希表删除一个记录时,不应将这个记录的所在位置置空,因为这会影响以后的查找。(√)

8.在散列检索中,“比较”操作一般也是不可避免的。(√)

9.在m阶B-树中每个结点上至少有个关键字,最多有m个关键字。(× )

10.负载因子 (装填因子)是散列表的一个重要参数,它反映散列表的装满程度。(√)11. 散列法的平均检索长度不随表中结点数目的增加而增加,而是随负载因子的增大而增大。(√)

12. 哈希表的结点中只包含数据元素自身的信息,不包含任何指针。 (× )

13. 若散列表的负载因子α<1,则可避免冲突的产生。(× )

14.用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度。(× )

15. 在平衡二叉树中,向某个平衡因子不为零的结点的树中插入一新结点,必引起平衡旋转。(× )

16.二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。(×)

17. 就平均查找长度而言,分块查找最小,折半查找次之,顺序查找最大。(× )

18.对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找成功,它们的平均查找长度是相同的,而对于查找失败,它们的平均查找长度是不同的。

(√)

19.任一查找树(二叉分类树)的平均查找时间都小于用顺序查找法查找同样结点的线性表的平均查找时间. (× )

20、在二叉树排序树中插入一个新结点,总是插入到叶结点下面。(× )

21、顺序查找法适用于存储结构为顺序或链接存储的线性表。(√)

四、简答题

1.对分(折半)查找适不适合链表结构的序列,为什么?用二分查找的查找速度必然比线性查找的速度快,这种说法对吗?

答:不适合!虽然有序的单链表的结点是按从小到大(或从大到小)顺序排列,但因其存储结构为单链表,查找结点时只能从头指针开始逐步搜索,故不能进行折半查找。

二分查找的速度在一般情况下是快些,但在特殊情况下未必快。例如所查数据位于首位时,则线性查找快;而二分查找则慢得多。

2.假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:

(1)画出描述折半查找过程的判定树;

(2)若查找元素54,需依次与哪些元素比较?

(3)若查找元素90,需依次与哪些元素比较?

(4)假定每个元素的查找概率相等,求查找成功时的平均查找长度。

解:

(1)先画出判定树如下(注:mid=?(1+12)/2?=6):

30

5 63

3 7 42 87

4 24 54 72 95

(2) 查找元素54,需依次与30, 63, 42, 54 等元素比较;

(3) 查找元素90,需依次与30, 63,87, 95, 72等元素比较;

(4)求ASL之前,需要统计每个元素的查找次数。判定树的前3层共查找1+2×2+4×3=17次;

但最后一层未满,不能用8×4,只能用5×4=20次,

所以ASL=1/12(17+20)=37/12≈3.08

3.设哈希(Hash)表的地址范围为0~17,哈希函数为:H(K)=K MOD 16。

K为关键字,用线性探测法再散列法处理冲突,输入关键字序列:

(10,24,32,17,31,30,46,47,40,63,49)

造出Hash表,试回答下列问题:

(1)画出哈希表的示意图;

(2)若查找关键字63,需要依次与哪些关键字进行比较?

(3)若查找关键字60,需要依次与哪些关键字比较?

(4)假定每个关键字的查找概率相等,求查找成功时的平均查找长度。

解:(1)画表如下:

然后顺移,与46,47,32,17,63相比,一共比较了6次!

(3)查找60,首先要与H(60)=60%16=12号单元内容比较,但因为12号单元为空(应当有空标记),所以应当只比较这一次即可。

(4)对于黑色数据元素,各比较1次;共6次;

对红色元素则各不相同,要统计移位的位数。“63”需要6次,“49”需要3次,“40”需要2次,“46”需要3次,“47”需要3次,

所以ASL=1/11(6+2+3×3)=17/11=1.5454545454≈1.55

4、设哈希表长度为11,哈希函数H(K)=(K的第一字母在字母表中的序号)MOD11,若输入顺序为(D,BA,TN,M,CI,I,K,X,TA),处理冲突方法为线性探测再散列或链地址法,要求构造哈希表,并求出等概率情况下查找成功平均查找长度。

ASL=15/9

5、输入一个正整数序列{100,50,302,450,66,200,30,260},建立一棵二叉排序树,

要求:⑴ 画出该二叉排序树;

⑵ 画出删除结点302后的二叉排序树。

6、 设有一组关键字:{19,01,23,14,55,20,84,27,68},采用哈希函数:

H (key )=key mod 7,采用开放地址法的线性探测再散列方法解决冲突。

要求:在0∽11的散列地址空间中对该关键字序列构造哈希表。

0 1 2 3 4 5 6 7 8 9 10 11

解:7(Jan, Feb, Mar, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec )

(1)试按表中元素的顺序依次插入一棵初始为空的二叉排序树,画出插入完成之后的二叉排序

树,并求其在等概率的情况下查找成功的平均查找长度。

(2)若对表中元素先进行排序构成有序表,求在等概率的情况下对此有序表进行折半查找时查

找成功的平均查找长度。

(3)按表中元素顺序构造一棵平衡二叉排序树,并求其在等概率的情况下查找成功的平均查找

长度。

8、用开放地址法的二次探测再散列方法Hi=(H(key)+di) mod 10(di=12,22,32,…,)解决冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。

解:

succ

以关键字27为例:H(27)=27%7=6(冲突) H

1

=(6+1)%10=7(冲突)

H 2=(6+22)%10=0(冲突) H

3

=(6+33)%10=5 所以比较了4次。

设哈希函数H(k)=3 K mod 11,散列地址空间为0~10,对关键字序列(32,13,49,24,38,21,4,12)按下述两种解决冲突的方法构造哈希表(1)线性探测再散列(2)链地址法,并分别求出等概率下查找成功时和查找失败时的平均查找长度ASLsucc和ASLunsucc

解:1)

succ

ASL unsucc =(1+2+1+8+7+6+5+4+3+2+1)/11=40/11

9、选取散列函数H (key )=(3*key )%11,用线性探测法处理冲突,对下列关键码序列构造一个散列地址空间为0~10,表长为11的散列表,{22,41,53,08,46,30,01,31,66}。 解:由题意知,m=11(刚好为素数)

则(22*3)%11=6......0 (41*3)%11=11......2 (53*3)%11=14......5 (08*3)%11=2......2 (46*3)%11=12......6 (30*3)%11=8......2 (01*3)%11=0......3 (31*3)%11=8......5 (66*3)%11=9 0

1 3 4,

7

五、算法设计题

1.已知11个元素的有序表为(05 13 19 21 37 56 64 75 80 88 92), 请写出

折半查找的算法程序,查找关键字为key的数据元素 (建议上机调试)。

解:折半查找的C程序有很多参考资料,注意此题要求是整型量。

折半查找的一个递归算法如下,形式非常简洁!

int Search_Bin_Recursive(SSTable ST, int key, int low, int high) //折半查找的递归算法

{

if(low>high) return 0; //查找不到时返回0

mid=(low+high)/2;

if(ST.elem[mid].key= =key) return mid;

else if(ST.elem[mid].key>key)

return Search_Bin_Recursive(ST, key, low, mid-1);

else return Search_Bin_Recursive(ST, key, mid+1, high);

}

}//Search_Bin_Recursive

2.试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构。

且树中结点的关键字均不同。

解:注意仔细研究二叉排序树的定义。易犯的典型错误是按下述思路进行判别:“若一棵非空的二叉树其左、右子树均为二叉排序树,且左子树的根的值小于根结点的值,又根结点的值

不大于右子树的根的值,则是二叉排序树”

(刘注:即不能只判断左右孩子的情况,还要判断左右孩子与双亲甚至根结点的比值也要遵

循(左小右大)原则)。

若要采用递归算法,建议您采用如下的函数首部:

bool BisortTree(BiTree T, BiTree&PRE),其中PRE为指向当前访问结点的前驱的指针。(或者直接存储前驱的数值,随时与当前根结点比较)

一个漂亮的算法设计如下:

int last=0, flag=1; // last是全局变量,用来记录前驱结点值,只要每个结点都比前驱大就行。

int Is_BSTree(Bitree T) //判断二叉树T是否二叉排序树,是则返回1,否则返回0

{

if(T->lchild&&flag) Is_BSTree(T->lchild);

if(T->data

last=T->data;

if(T->rchild&&flag) Is_BSTree(T->rchild);

return flag;

}//Is_BSTree

3.已知一个含有1000个记录的表,关键字为中国人姓氏的拼音,请给出此表的一个哈希表

设计方案,要求它在等概率情况下查找成功的平均查找长度不超过3。

解:设计哈希表的步骤为:

a)根据所选择的处理冲突的方法求出装载因子a的上界;

b)由a值设计哈希表的长度m;

c)根据关键字的特性和表长m选定合适的哈希函数。

刘注:要求ASL≤3,则m必然要尽量长,以减少冲突;

4.已知某哈希表的装载因子小于1,哈希函数H(key)为关键字(标识符)的第一个字母在字

母表中的序号,处理冲突的方法为线性探测开放定址法。试编写一个按第一个字母的顺序输出哈希表中所有关键字的算法。

解:注意此题给出的条件:装载因子a〈1, 则哈希表未填满。由此可写出下列形式简明的算法:

void PrintWord(Hash Table ht)

{//按第一个字母的顺序输出哈希表ht中的标识符。哈希函数为表示符的第一个字母在字母表中的序号,处理冲突的方法是线性探测开放定址法。

for(i=1; i<=26; i++){

j=i;

While(ht.elem[j].key){

if(Hash(ht.elem[j].key==i)printf(ht.elem[j].key);

j=(j+1)%m;

}

}}//PrintWord

第10章排序

一、填空题(每空1分,共24分)

1. 大多数排序算法都有两个基本的操作:比较和移动。

2. 在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第7

个记录60插入到有序表时,为寻找插入位置至少需比较 6 次。

3. 在插入和选择排序中,若初始数据基本正序,则应选用插入排序算法;若初始数据基

本反序,则应选用选择排序算法。

4. 在堆排序和快速排序中,若初始记录接近正序或反序,则选用堆排序;若初始记录基

本无序,则最好选用快速排序。

5. 对于n个记录的集合进行冒泡排序,在最坏的情况下所需要的时间是 O(n2)。若对其进行

快速排序,在最坏的情况下所需要的时间是 O(n2) 。

6. 对于n个记录的集合进行归并排序,所需要的平均时间是O(nlog2n),所需要的附加空

间是 O(n) 。

7.对于n个记录的表进行2路归并排序,整个归并排序需进行┌log2n┐趟(遍)。

8. 设要将序列(Q, H, C, Y, P, A, M, S, R, D, F, X)中的关键码按字母序的升序重新排列,则:冒泡排序一趟扫描的结果是 H C Q P A M S R D F X Y ;初始步长为4的希尔(shell)排序一趟的结果是 P A C S Q H F X R D M Y ;归并排序一趟扫描的结果是 H Q C Y A P M S D R F X;快速排序一趟扫描的结果是 F H C D P A M Q R S Y X ;堆排序初始建堆的结果是 A D C R F Q M S Y P H X 。

9. 分别采用堆排序,快速排序,冒泡排序和归并排序,对初态为有序的表,则最省时间的是冒泡算法,最费时间的是快速算法。

10、对n个记录的表r[1..n]进行简单选择排序,所需进行的关键字间的比较次数为___ n(n-1)/2 ____。

二、单项选择题(每小题1分,共18分)

1、下列四个序列中,( C )是堆。

A. 75,65,30,15,25,45,20,10

B. 75,65,45,10,30,25,20,15

C. 75,45,65,30,15,25,20,10

D. 75,45,65,10,25,30,20,15

( C )2.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为A. 希尔排序B. 冒泡排序C. 插入排序D. 选择排序

( D )3.从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为

A. 希尔排序B. 归并排序C. 插入排序D. 选择排序

( B )4.对n个不同的排序码进行冒泡排序,在下列哪种情况下比较的次数最多。

A. 从小到大排列好的B. 从大到小排列好的C. 元素无序D. 元素基本有序

( D )5.对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为A. n+1 B. n C. n-1 D. n(n-1)/2

( C )6.快速排序在下列哪种情况下最易发挥其长处。

A. 被排序的数据中含有多个相同排序码B. 被排序的数据已基本有序

C. 被排序的数据完全无序D. 被排序的数据中的最大值和最小值相差悬殊

( B )7.对有n个记录的表作快速排序,在最坏情况下,算法的时间复杂度是

n) D.O(n3)

A.O(n) B.O(n2) C.O(nlog

2

( C )8.若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为

A. 38, 40, 46, 56, 79, 84 B. 40, 38, 46 , 79, 56, 84 C. 40, 38,46, 56, 79, 84 D. 40, 38, 46, 84, 56, 79

( D )9.下列关键字序列中,是堆。

A. 16, 72, 31, 23, 94, 53 B. 94, 23, 31, 72, 16, 53

C. 16, 53, 23, 94,31, 72 D. 16, 23, 53, 31, 94, 72

( B )10.堆是一种排序。

A. 插入B.选择C. 交换D. 归并

( C )11.堆的形状是一棵

A. 二叉排序树B.满二叉树C. 完全二叉树D. 平衡二叉树

( B )12.若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用堆排序的方法建

立的初始堆为

12、对序列{15,9,7,8,20,-1,4,} 用希尔排序方法排序,经一趟后序列变为{15,-l,

4,8,20,9,7}则该次采用的增量是 ( B )

A. l

B. 4

C. 3

D. 2

13、快速排序方法在( D )情况下最不利于发挥其长处。

A. 要排序的数据量太大

B. 要排序的数据中含有多个相同值

C. 要排序的数据个数为奇数

D. 要排序的数据已基本有序

14、在含有n个关键字的小根堆(堆顶元素最小)中,关键字最大的记录有可能存储在( D )

位置上。

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

15、1.将5个不同的数据进行排序,至多需要比较( C )次。

A. 8 B. 9 C. 10 D. 25

16.下述几种排序方法中,要求辅助内存最多的是( C )

A. 插入排序B.快速排序C. 归并排序D. 选择排序

17、对下列关键字序列用快速排序法进行排序时,速度最快的情形是(A )

A){21、25、5、17、9、23、30} B){25、23、30、17、21、5、9}

B){21、9、17、30、25、23、5} D){5、9、17、21、23、25、30} 18、稳定的排序方法是(B )

A.直接插入排序和快速排序 B.折半插入排序和起泡排序

C.简单选择排序和四路归并排序 D.树形选择排序和shell排序

19、在对n个元素的序列进行排序时,堆排序所需要的附加存储空间是( B )。

A. O(log

2n) B. O(1) C. O(n) D. O(nlog

2

n)

20、对n个记录的文件进行快速排序,所需要的辅助存储空间大致为(C)

A、O(1)

B、O(n)

C、O(1og2n)

D、O(n2)

21、下列排序方法中,哪一个是稳定的排序方法?( B )

A.堆排序 B.二分法插入排序 C.希尔排序 D.快速排序

22、如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。( C )就是不稳定的排序方法。

A.起泡排序 B.归并排序 C.Shell排序 D.直接插入排序

23.若需在O(nlog

2

n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是( C )。

A. 快速排序

B. 堆排序

C. 归并排序

D. 直接插入排序

24.在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k<

A.快速排序 B.直接插入排序 C. 二路归并排序 D.起泡排序

25.下面给出的四种排序方法中,排序过程中的比较次数与排序方法无关的是。( A ) A.选择排序法 B. 插入排序法 C. 快速排序法 D. 堆排序

26、某内排序方法的稳定性是指(D )。

A.该排序算法不允许有相同的关键字记录

B.该排序算法允许有相同的关键字记录

C.平均时间为0(n log n)的排序方法

D.以上都不对

27、采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是(D)

A:递归次数与初始数据的排列次序无关

B:每次划分后,先处理较长的分区可以减少递归次数

C:每次划分后,先处理较短的分区可以减少递归次数

D:递归次数与每次划分后得到的分区处理顺序无关

28、对一组数据(2,12,16,88,5,10)进行排序,若前三趟排序结果如下(A)

第一趟:2,12,16,5,10,88

第二趟:2,12,5,10,16,88

第三趟:2,5,10,12,16,88

则采用的排序方法可能是:

A:起泡排序 B:希尔排序 C:归并排序 D:基数排序

29、已知关键序列5,8,12,19,28,20,15,22是小根堆(最小堆),插入关键字3,调整后得到的小根堆是(A)

A.3,5,12,8,28,20,15,22,19

B. 3,5,12,19,20,15,22,8,28

C.3,8,12,5,20,15,22,28,19

D. 3,12,5,8,28,20,15,22,19

30、设有10000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用

下列(B )方法可以达到此目的。

A、快速排序

B、堆排序

C、归并排序

D、插入排序

三、判断题

1.当待排序的元素很大时,为了交换元素的位置,移动元素要占用较多的时间,这是影响时间复杂度的主要因素。(√)

2.内排序要求数据一定要以顺序方式存储。(×)

3.交换排序算法中的比较次数与初始元素序列的排列无关。(√)

4.排序的稳定性是指排序算法中的比较次数保持不变,且算法能够终止。(×)5.影响外排序的时间因素主要是内存与外设交换信息的总次数。( √ )

6.简单选择排序算法的时间复杂度为O(N)。(×)

7.中序遍历二叉排序树,可得到关键码的有序序列。(√)

n )。(×)8.在初始数据表已经有序时,快速排序算法的时间复杂度为O(nlog

2

9.当待排序记录已经从小到大排序或者已经从大到小排序时,快速排序的执行时间最省。(×)

10. 归并排序在任何情况下都比所有简单排序速度快。(×)

11.快速排序的速度在所有排序方法中为最快,而且所需附加空间也最少。(×)

12.在用堆排序算法排序时,如果要进行增序排序,则需要采用“大根堆”。(√)13.堆是一个完全二叉树。(√)

14.(101,88,46,70,34,39,45,58,66,10)是堆。(√)

n)。(×)

15.快速排序和归并排序在最坏情况下的比较次数都是O(nlog

2

16、在待排序的记录集中,存在多个具有相同键值的记录,若经过排序,这些记录的相对次序仍然保持不变,称这种排序为稳定排序。(√)

17、在执行某个排序算法过程中,出现了排序码朝着最终排序序列位置相反方向移动,则该

算法是不稳定的。(×)

18、当待排序的元素很大时,为了交换元素的位置,移动元素要占用较多的时间,这是影响

时间复杂度的主要因素。(√)

19、冒泡排序算法关键字比较的次数与记录的初始排列次序无关。(×)

n )。(×)

20、在初始数据表已经有序时,快速排序算法的时间复杂度为O(nlog

2

四、问答题

1、设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称增量序列)依次是4,2,1则排序需多少趟?写出第一趟结束后,数组中数据的排列次序。答:[略]

2、在各种排序方法中,哪些是稳定的?哪些是不稳定的?并为每一种不稳定的排序方法举出一个不稳定的实例。

答:[略]

3、给定一个关键字序列{24,19,32,43,38,6,13,22},请写出快速排序第一趟的结果;堆排序时所建的初始堆;归并排序的全过程。然后回答上述三中排序方法中那一种方法使用的辅助空间最少?在最坏情况下那种方法的时间复杂度最差?

答:一趟快速排序:22,19,13,6,24,38,43,32

初始大堆:43,38,32,22,24,6,13,19

二路并归:第一趟:19,24,32,43,6,38,13,22

第二趟:19,24,32,43,6,13,22,38

第三趟:6,13,19,22,24,32,38,43

堆排序辅助空间最少,最坏情况下快速排序时间复杂度最差。

4、设待排序的关键码分别为28,13,72,85,39,41,6,20,请用快速排序方法排序,写出其排序过程。

答:[略]

5、对下面数据表,写出采用SHELL排序算法排序的每一趟的结果,并标出数据移动情况。(125,11,22, 34,15,44,76,66,100,8,14,20,2,5,1)

答:[略]

6、对下面数据表,写出采用SHELL排序算法排序的每一趟的结果,并标出数据移动情况。(125,11,22, 34,15,44,76,66,100,8,14,20,2,5,1)。

答:125,11,22,34,15,44,76,66,100,8,14,20,2,5,1

设D=7 1,11,8,14,15,2,5,66,100,22,34,20,44,76,125

D=3 1,11,2,5,15,8,14,34,20,22,66,100,44,76,125

D=1 1,2,5,8,11,14,15,20,22,34,44,66,76,100,125

7、已知待排序的序列为(503,87,512,61,908,170,897,275,653,462),试完成下列各题。

(1) 根据以上序列建立一个堆(画出第一步和最后堆的结果图),希望先输出最小值。

(2) 输出最小值后,如何得到次小值。(并画出相应结果图)

答:[略]

8、有一随机数组(25,84,21,46,13,27,68,35,20),现采用某种方法对它们进行排序,其每趟排序结果如下, 则该排序方法是什么?

初始:25,84,21,46,13,27,68,35,20

第一趟:20,13,21,25,46,27,68,35,84

第二趟:13,20,21,25,35,27,46,68,84

第三趟:13,20,21,25,27,35,46,68,84

答:该排序方法为快速排序

9、对给定文件(28,07,39,10,65,14,61,17,50,21)选择第一个元素28进行划分,写出其快速排序第一遍的排序过程。

答:初始序列:[28],07,39,10,65,14,61,17,50,21 21移动:

21,07,39,10,65,14,61,17,50,[]

39移动:21,07,[],10,65,14,61,17,50,39 17移动:

21,07,17,10,65,14,61,[],50,39

65移动:21,07,17,10,[],14,61,65,50,39 14移动:

21,07,17,10,14,[28],61,65,50,39

10、已知一关键码序列为:3,87,12,61,70,97,26,45。试根据堆排序原理,填写完整下示各步骤结果。

建立堆结构:_____________

交换与调整:

(1)87 70 26 61 45 12 3 97;(2)____________________;

(3)61 45 26 3 12 70 87 97;(4)____________________;

(5)26 12 3 45 61 70 87 97;(6)____________________;

(7)3 12 26 45 61 70 87 97;

答:建立堆结构:97,87,26,61,70,12,3,45 (2)70,61,26,3,45,12,87,97

(4)45,12,26,3,61,70,87,97 (6)12,3,26,45,61,70,87,97

四、算法设计题

1、下面是冒泡排序算法,请阅读并完成该程序,并回答以下问题:

PROCEDURE bubblesort (r,n)

BEGIN

i:=1; m:=n-1; flag:=1;

WHILE (i<=(1)___)AND(flag=(2)____) DO

BEGIN

flag:= (3)___;

FOR j:=1 TO m DO

IF r[j].key>r[j+1].key THEN

BEGIN flag:= (4)___; t:=r[j]; r[j]:=r[j+1]; r[j+1]:=t

END;

i:=i+1;m:=m-1

END;

END.

(1)请在上面横线上填上适当的语句,完成该算法程序。

(2)设计标志flag的作用是什么?

(3)该算法结点的最大比较次数和最大移动次数是多少?

(4)该分类算法稳定吗?

答:[略]

2、有n个记录存储在带头结点的双向链表中,现用双向起泡排序法对其按上升序进行排序,请写出这种排序的算法。(注:双向起泡排序即相邻两趟排序向相反方向起泡)

答: typedef struct node

{ ElemType data;

struct node *prior,*next;

}node,*DLinkedList;

void TwoWayBubbleSort(DLinkedList la)

//对存储在带头结点的双向链表la中的元素进行双向起泡排序。

{int exchange=1; // 设标记

DLinkedList p,temp,tail;

head=la //双向链表头,算法过程中是向下起泡的开始结点

tail=null; //双向链表尾,算法过程中是向上起泡的开始结点

while (exchange)

{p=head->next; //p是工作指针,指向当前结点

exchange=0; //假定本趟无交换

while (p->next!=tail) // 向下(右)起泡,一趟有一最大元素沉底

if (p->data>p->next->data) //交换两结点指针,涉及6条链

{temp=p->next; exchange=1;//有交换

p->next=temp->next;temp->next->prior=p //先将结点从链表上摘下

temp->next=p; p->prior->next=temp; //将temp插到p结点前

temp->prior=p->prior; p->prior=temp;

}

else p=p->next; //无交换,指针后移

tail=p; //准备向上起泡

p=tail->prior;

while (exchange && p->prior!=head)

//向上(左)起泡,一趟有一最小元素冒出

if (p->dataprior->data) //交换两结点指针,涉及6条链

{temp=p->prior; exchange=1; //有交换

p->prior=temp->prior;temp->prior->next=p

;//先将temp结点从链表上摘下

temp->prior=p; p->next->prior=temp;

//将temp插到p结点后(右)

temp->next=p->next; p->next=temp;

}

else p=p->prior; //无交换,指针前移

head=p; //准备向下起泡

}// while (exchange)

} //算法结束

3、对单链表中元素用插入法按从小到大排序的算法描述如下(L为链表头结点指针),请将该算法补充完整。

typedef struct node

{int data; struct node *next;

}linknode,*link;

void Insertsort(link L)

国家开放大学,数据结构(本),形考作业2

国家开放大学,数据结构(本),形考作业2 1 . 若让元素1,2,3依次进栈,则出栈顺序不可能为( A )。 选择一项: A. 3,1,2 B. 2,1,3 C. 1,3,2 D. 3,2,1 2.一个队列的入队序列是1,2,3,4。则队列的输出序列是()。 选择一项: A. 3,2,4,1 B. 1,4,3,2 C. 1,2,3,4 D. 4,3,2,1 3.向顺序栈中压入新元素时,应当()。 选择一项: A. 先存入元素,再移动栈顶指针 B. 先移动栈顶指针,再存入元素 C. 同时进行 D. 先后次序无关紧要 4.在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行()。 选择一项: A. p->next=top->next;top->next=p; B. p->next=top->next;top=top->next; C. top->next=p; D. p->next=top;top=p; 5.在一个栈顶指针为top的链栈中删除一个结点时,用 x保存被删结点的值,则执行()。选择一项: A. x=top;top=top->next; B. x=top->data; C. top=top->next;x=top->data; D. x=top->data;top=top->next; 6.判断一个顺序队列(最多元素为m)为空的条件是()。 选择一项: A. rear=m B. front==rear+1 C. front==rear D. rear==m-1 7. 判断一个循环队列为满的条件是()。 选择一项: A. (rear+1)%MaxSize==front B. front==rear+1 C. rear=MaxSize D. rear%MaxSize= =front 8. 判断栈满(元素个数最多n个)的条件是()。

数据结构第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 一、单项选择题 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.前半句错,后半句对

数据结构第10章 习题答案

1.下列排序算法中,其中( D )是稳定的。 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序 2.有一组数据(15,9,7,8,20,-1,7,4)用快速排序的划分方法进行一趟划分后数据的排序为 ( A )(按递增序)。 A.下面的B,C,D都不对。 B.9,7,8,4,-1,7,15,20 C.20,15,8,9,7,-1,4,7 D. 9,4,7,8,7,-1,15,20 3.下列排序算法中,在每一趟都能选出一个元素放到其最终位置上,并且其时间性能受数据初始特性影响的是:( B )。 A. 直接插入排序 B. 快速排序 C. 直接选择排序 D. 堆排序 4.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用( D )方法最快。 A.起泡排序 B.快速排列 C.Shell排序 D.堆排序 E.简单选择排序 5.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为( A )排序法。 A. 插入 B. 选择 C. 希尔 D. 二路归并 6. 在排序算法中,每次从未排序的记录中挑出最小(或最大)关键码字的记录,加入到已排序记录的末尾,该排序方法是( A )。 A. 选择 B. 冒泡 C. 插入 D. 堆 7. 若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行( C )次比较。 A. 3 B. 10 C. 15 D. 25 8. 对序列{15,9,7,8,20,-1,4,} 用希尔排序方法排序,经一趟后序列变为{15,-l,4,8,20,9,7}则该次采用的增量是 ( B ) A. l B. 4 C. 3 D. 2 9. 堆排序是( E )类排序 A. 插入 B. 交换 C. 归并 D. 基数 E. 选择 10.排序方法有许多种,(1)法从未排序的序列中依次取出元素,与已排序序列(初始时为空)中的元素作比较,将其放入已排序序列的正确位置上;(2)法从未排序的序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端;交换排序方法是对序列中的元素进行一系列比较,当被比较的两元素逆序时,进行交换;(3)和(4)是基于这类方法的两种排序方法,而(4)是比(3)效率更高的方法;(5)法是基于选择排序的一种排序方法,是完全二叉树结构的一个重要应用。 (1)--(5): A.选择排序 B.快速排序 C.插入排序 D.起泡排序 E.归并排序 F.shell排序 G.堆排序 H.基数排序 10.1C 5 2A 3D 4B 5G 1.若不考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字的__ ____和记录的_____。比较,移动 2.分别采用堆排序,快速排序,冒泡排序和归并排序,对初态为有序的表,则最省时间的是_____算法,最费时间的是______算法。冒泡,快速 3. 设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称增量序列)依次是4,2,1则排序需__________趟,写出第一趟结束后,数组中数据的排列次序__________。3,(10,7,-9,0,47,23,1,8,98,36) 4.对给定文件(28,07,39,10,65,14,61,17,50,21)选择第一个元素28进行划分,写出其快速排序第一遍的排序过程。

数据结构作业题及参考答案

东北农业大学网络教育学院 数据结构作业题(一) 一、选择题(每题2分,共20分) 1.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。 A、O(n) B、O (n/2) C、O (1) D、O (n2) 2.带头结点的单链表first为空的判定条件是()。 A、first == NULL; B、first->link == NULL; C、first->link == first; D、first != NULL; 3.在一棵树中,()没有前驱结点。 A、分支结点 B、叶结点 C、树根结点 D、空结点 4.在有向图中每个顶点的度等于该顶点的()。 A、入度 B、出度 C、入度与出度之和 D、入度与出度之差 5.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为()的值除以9。 A、20 B、18 C、25 D、22 6.下列程序段的时间复杂度为()。 s=0; for(i=1;i

数据结构第十章习题课

1.下列排序算法中,其中()是稳定的。 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序 2.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。 A. 快速排序 B. 堆排序 C. 归并排序 D. 直接插入排序3.排序趟数与序列的原始状态有关的排序方法是( )排序法。 A.插入 B. 选择 C. 冒泡 D. 快速4.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中 的变化为(1)84 47 25 15 21 (2)15 47 25 84 21 (3)15 21 25 84 47 (4) 15 21 25 47 84 则采用的排序是( )。 A. 选择 B. 冒泡 C. 快速 D. 插入5.对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序。 A. 选择 B. 快速 C. 希尔 D. 冒泡6.若上题的数据经一趟排序后的排列为{9,15,7,8,20,-1,4},则采用的 是()排序。 A.选择 B. 堆 C. 直接插入 D. 冒泡 7.在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是()A.直接插入排序B.冒泡排序C.简单选择排序 8.下列排序算法中,()算法可能会出现下面情况:在最后一趟开始之前,所有元素都不在其最终的位置上。 A. 堆排序 B. 冒泡排序 C. 快速排序 D. 插入排序 9. 下列排序算法中,占用辅助空间最多的是:( ) A. 归并排序 B. 快速排序 C. 希尔排序 D. 堆排序10.用直接插入排序方法对下面四个序列进行排序(由小到大),元素比较次数 最少的是()。 A.94,32,40,90,80,46,21,69 B.32,40,21,46,69,94,90,80 C.21,32,46,40,80,69,90,94 D.90,69,80,46,21,32,94,40 11. 若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行()次比较。 A. 3 B. 10 C. 15 D. 25 12.对n个记录的线性表进行快速排序为减少算法的递归深度,以下叙述正确

数据结构(本)形考作业答案

形考作业一 题目1 把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为()。 选择一项: A. 逻辑结构 B. 给相关变量分配存储单元 C. 算法的具体实现 D. 物理结构 题目2 下列说法中,不正确的是()。 选择一项: A. 数据可有若干个数据元素构成 B. 数据元素是数据的基本单位 诃C.数据项是数据中不可分割的最小可标识单位 产_D.数据项可由若干个数据元素构成 题目3 一个存储结点存储一个()。 选择一项: A. 数据结构 B. 数据类型 C. 数据项 i_D.数据元素 题目4 数据结构中,与所使用的计算机无关的是数据的()。 选择一项: 题目5

下列的叙述中,不属于算法特性的是(选 )°择一项: A. 有穷性 B. 可行性

* C.可读性 D. 输入性 题目6 正确 获得2.00分中的2.00分 ◎ A.研究算法中的输入和输出的关系 B. 分析算法的易懂性和文档性 I 圏 C.分析算法的效率以求改进 D.找出数据结构的合理性 题目7 算法指的是( )。 选择一项: A. 排序方法 B. 解决问题的计算方法 C. 计算机程序 * D.解决问题的有限运算序列 题目8 算法的时间复杂度与( 选择一项: A. 所使用的计算机 因B.数据结构 D. i 题目10 设有一个长度为n 的顺序表,要删除第i 个元素移动元素的个数为( )。 选择一项: )有关。 D. 计算机的操作系统 题目9 设有一个长度为n 的顺序表,要在第i 个元素之前(也就是插入元素作为新表的第 i 个元 素),插入一个元素,则移动元素个数为( )。 选择一项: A. n-i+1 3 B. n-i-1 rj C. n-i C.算法本身

数据结构课程作业

数据结构课程作业_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 解析第六章第六节二叉树的性质

《数据结构》填空作业题(答案)

《数据结构》填空作业题答案 第 1 章绪论(已校对无误) 1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。 2.程序包括两个内容:数据结构和算法。 3.数据结构的形式定义为:数据结构是一个二元组:Data Structure =( D, S)。 4.数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。 5.数据的逻辑结构可以分类为线性结构和非线性结构两大类。 6.在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。 7.在树形结构中,数据元素之间存在一对多的关系。 8.数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。 9.数据的逻辑结构包括线性结构、树形结构和图形结构 3 种类型,树型结构和有向 图结构合称为非线性结构。 10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑 关系由存储单元位置的邻接关系来体现。 11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑 关系由附加的指针域来体现。 12.数据的存储结构可用 4 种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。 13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。 14.数据结构在物理上可分为顺序存储结构和链式存储结构。 15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数 据的实现方法。 16.数据元素可由若干个数据项组成。 17.算法分析的两个主要方面是时间复杂度和空间复杂度。 18.一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂 度是用该算法在运行过程中所占用的存储空间的大小来度量的。 19.算法具有如下特点:有穷性、确定性、可行性、输入、输出。 20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切 的定义,并在有穷时间内计算出结果。 21. 下面程序段的时间复杂度为㏒ 3n 。 1

数据结构各章作业题目

第一章作业 一、选择题 1.被计算机加工的数据元素不是孤立的,它们彼此之间一般存在某种关系,通常把数据元素之间的 这种关系称为( )。 A. 规则 B. 结构 C. 集合 D. 运算 2.在Data_Structure=(D,S)中,D是( )的有限集合。 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.以下选项属于线性结构的是( )。 A. 广义表 B. 二叉树 C. 串 D. 稀疏数组 8.以下选项属于非线性结构的是( )。 A. 广义表 B. 队列 C. 优先队列 D. 栈 9.以下属于逻辑结构的是( ) A. 顺序表 B. 散列表 C. 有序表 D. 单链表 10.一个完整的算法应该具有( )等特性。 A. 可执行性、可修改性和可维护性 B. 可行性、确定性和有穷性

C. 确定性、有穷性和可靠性 D. 正确性、可读性和有效性 11.若一个问题既可以用迭代方法也可以用递归方法求解,则( )的方法具有更高的时空效率。 A. 迭代 B. 递归 C. 先递归后迭代 D. 先迭代后递归 12.一个递归算法必须包括( ) A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D. 终止条件和迭代部 分 13.算法的时间复杂度与( )有关。 A. 问题规模 B. 源程序长度 C. 计算机硬件运行速度 D. 编译后执行程序的 质量 二、指出下列各算法的功能并求出其时间复杂度。 (1) int Prime(int n){ int i=2,x=(int)sqrt(n); //sqrt(n)为求n的平方根 while(i<=x){ if(n%i==0)break; i++; } if(i>x) return 1; else return 0; } (2) int sum1(int n){ int p=1,s=0; for(int i=1;i<=n;i++){ p*=i;s+=p;

数据结构作业第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 一、单项选择题 1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 4.设语句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) 5.算法分析的目的是(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.前半句错,后半句对

第二章数据结构习题作业

2.6.数据的存储结构主要有哪两种?它们之间的本质区别是什么? 答:主要有:顺序存储结构和链式存储结构两种。 区别: 顺序存储结构是借助元素在存储器的相对位置来表示数据间的逻辑关系,而链式存储结构是借助指针来表示数据间的逻辑关系。 2.7 设数据结构的集合为D={d1,d2,d3,d4,d5},试指出下列各关系R所对应的数据结构B=(D,R)中哪些是线性结构,哪些是非线性结构。 (1)R={(d1,d2),(d2,d4),(d4,d2),(d2,d5),(d4,d1)}; ( 2 ) R={(d5,d4),(d4,d3),(d3,d1),(d1,d2)}; ( 3 ) R={(di,di+1)|i=4,3,2,1}; ( 4 ) R={(di,dj)|i

2.〉链表:扩展性强,易于删除,添加;内存中地址非连续;长度可以实时变化;适用于需要进行大量增添或删除元素操作而对访问元素无要求的程序。 (2)缺点 顺序表:插入,删除操作不方便;扩展性弱;不易删除,添加。 链表:不易于查询,索引慢。 (3)顺序表和链表的优缺点是互相补充的关系。 2.17 试比较单向链表与双向链表的优缺点。 答:(1)优点 单向链表:耗存储空间小; 双向链表:可以从任何一点开始进行访问; (2)缺点: 单向链表:访问时必须从头开始,耗时。 双向链表:耗存储空间大。 (3)两者为互补关系 2.22 CQ[0:10]为一循环队列,初态front=rear=1,画出下列操作后队的头,尾指示器状态: (1)d,e,h,g,入队; (2)d,e出队; (3)I,j,k,l,m入队; (4)b出队;

电大数据结构(本)形考作业1-阶段性学习测验1答案

"题目1:把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为()。: 逻辑结构 ; 算法的具体实现 ; 给相关变量分配存储单元 ; 物理结构" "题目2:下列说法中,不正确的是()。 : 数据元素是数据的基本单位 ; 数据项可由若干个数据元素构成 ; 数据项是数据中不可分割的最小可标识单位 ; 数据可有若干个数据元素构成" "题目3:一个存储结点存储一个()。 : 数据类型 ; 数据元素 ; 数据结构 ; 数据项" "题目4:数据结构中,与所使用的计算机无关的是数据的()。 : 物理结构 ; 逻辑结构 ; 存储结构 ; 物理和存储结构" "题目5:在线性表的顺序结构中,以下说法正确的是()。 : 数据元素是不能随机访问的 ; 逻辑上相邻的元素在物理位置上也相邻 ; 进行数据元素的插入、删除效率较高 ; 逻辑上相邻的元素在物理位置上不一定相邻" "题目6:对链表, 以下叙述中正确的是()。 : 插入删除元素的操作一定要要移动结点 ; 不能随机访问任一结点 ; 可以通过下标对链表进行直接访问 ; 结点占用的存储空间是连续的" "题目7:下列的叙述中,不属于算法特性的是()。 : 输入性 ; 可读性 ; 可行性 ; 有穷性" "题目8:算法的时间复杂度与()有关。 : 数据结构 ; 计算机的操作系统 ; 所使用的计算机 ; 算法本身"

"题目9:设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为()。 : n-i+1 ; n-i-1 ; i ; n-i" "题目10:设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为()。 : n-i-1 ; n-i ; i ; n-i+1" "题目11:在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句()。 : p->next=q->next ; q->next=NULL ; p->next=q ; p=q->next" "题目12:在一个单链表中p所指结点之后插入一个s所指的结点时,可执行()。 : s->next=p->next; p->next=s; ; p->next=s->next; ; p->next= s; s->next= p->next ; p=s->next" "题目13:非空的单向循环链表的尾结点满足()(设头指针为head,指针p指向尾结点)。 : p== head ; p->next==NULL ; p->next==head ; p==NULL" "题目14:链表不具有的特点是()。 : 插入删除不需要移动元素 ; 不必事先估计存储空间 ; 逻辑上相邻的元素在物理位置上不一定相邻 ; 可随机访问任一元素" "题目15:带头结点的链表为空的判断条件是()(设头指针为head)。 : head->next==head ; head->next==NULL ; head!=NULL ; head ==NULL" "题目16:在一个长度为n的顺序表中为了删除第5个元素,由第6个元素开始从后到前依次移动了15个元素。则原顺序表的长度为()。 : 19 ; 21 ; 25

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

第 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 数据复杂性和程序复杂性

数据结构作业(附答案)

1.数据的最小单位是( A )。 (A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量 2.下面关于线性表的叙述错误的是(D)。 (A) 线性表采用顺序存储必须占用一片连续的存储空间 (B) 线性表采用链式存储不必占用一片连续的存储空间 (C) 线性表采用链式存储便于插入和删除操作的实现 (D) 线性表采用顺序存储便于插入和删除操作的实现 3.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为(C)。 (A) R-F (B) F-R (C) (R-F+M)%M (D) (F-R+M)%M 4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为(A)。 (A) BADC(B)BCDA (C) CDAB (D) CBDA 5.设某棵二叉树中有2000个结点,则该二叉树的最小高度为(C)。 (A) 9 (B) 10 (C) 11(D) 12 6.下面程序的时间复杂为(B) for(i=1,s=0;i<=n;i++){t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;} (A) O(n) (B) O(n2)(C) O(n3) (D) O(n4) 7.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为(C)。 (A) q=p->next;p->data=q->data;p->next=q->next;free(q); (B) q=p->next;q->data=p->data;p->next=q->next;free(q); (C) q=p->next;p->next=q->next;free(q); (D) q=p->next;p->data=q->data;free(q); 8.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为(C )。 (A)O(n) (B) O(nlog2n) (C) O(1)(D) O(n2) 9.设一棵二叉树的深度为k,则该二叉树中最多有(D )个结点。 (A) 2k-1 (B) 2k(C) 2k-1(D) 2k-1 10.设用链表作为栈的存储结构则退栈操作( B )。 (A) 必须判别栈是否为满(B) 必须判别栈是否为空 (C) 判别栈元素的类型(D) 对栈不作任何判别 11.函数substr(“DATASTRUCTURE”,5,9)的返回值为(A )。 (A) “STRUCTURE”(B) “DATA” (C) “ASTRUCTUR”(D) “DATASTRUCTURE” 12.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是( C)。 (A) N0=N1+1 (B) N0=N l+N2(C) N0=N2+1(D) N0=2N1+l 13.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(B )。 (A) 空或只有一个结点(B) 高度等于其结点数 (C) 任一结点无左孩子(D) 任一结点无右孩子 14. 深度为k的完全二叉树中最少有( B )个结点。 (A) 2k-1-1 (B) 2k-1(C) 2k-1+1(D) 2k-1

数据结构形考作业答案

数据结构(本)形考作业1参考答案: 一、单项选择题 1.C 2.D 3.C 4.C 5.D 6.C 7.C 8.C 9.A 10.B 二、填空题 1.n-i+1 2.n-i 3.集合、线性表、树、图 4. 存储结构、物理结构 5.线性表图 6. 有穷性、确定性、可行性、有输入、有输出 7. 图 8.树 9. 线性表 10. n-1 O(n) 11.s->next=p->next; 12.head 13.q->next=p->next; 14.p->next=head; 15.单链表 16.顺序存储链式存储 17.存储结构 18.两个后继结点前驱结点尾结点头结点 19.指向头结点的指针指向第一个结点的指针 20.链式链表 三、问答题 1.简述数据的逻辑结构和存储结构的区别与联系,它们如何影响算法的设计与实现? 答:若用结点表示某个数据元素,则结点与结点之间的逻辑关系就称为数据的逻辑结构。数据在计算机中的存储表示称为数据的存储结构。可见,数据的逻辑结构是反映数据之间的固有关系,而数据的存储结构是数据在计算机中的存储表示。尽管因采用的存储结构不同,逻辑上相邻的结点,其物理地址未必相同,但可通过结点的内部信息,找到其相邻的结点,从而保留了逻辑结构的特点。采用的存储结构不同,对数据的操作在灵活性,算法复杂度等方面差别较大。 2.解释顺序存储结构和链式存储结构的特点,并比较顺序存储结构和链式存储结构的优缺点。 答:顺序结构存储时,相邻数据元素的存放地址也相邻,即逻辑结构和存储结构是统一的,,要求内存中存储单元的地址必须是连续的。 优点:一般情况下,存储密度大,存储空间利用率高。 缺点:(1)在做插入和删除操作时,需移动大量元素;(2)由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;(3)表的容量难以扩充。 链式结构存储时,相邻数据元素可随意存放,所占空间分为两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。 优点:插入和删除元素时很方便,使用灵活。

数据结构习题与答案

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

数据结构第十章习题课

1 .下列排序算法中,其中( )是稳定的。 A.堆排序,冒泡排序 B.快速排序,堆排序 C.直接选择排序,归并排序 D.归并排序,冒泡排序 2.若需在O (nlog 2n )的时间内完成对数组的排序,且要求排序是稳定的,贝U 可选 择的排序方法是( )。 A.快速排序 B.堆排序 C.归并排序 D.直接插入排序 3.排序趟数与序列的原始状态有关的排序方法是()排序法。 A .插入 B.选择 C.冒泡 D.快速 15, 21)排序,数据的排列次序在排序的过程中 (2) 15 47 25 84 21 (3) 15 21 25 84 47 (4) 15 21 25 47 84则采用的排序是 ( ) A.选择 B.冒泡 5. 对序列{15,9,7,8,20,-1, 4}进行排序,进行一趟后数据的排列变为{4, 9, -1,8,20,7,15};则采用的是( A.选择 B.快速 6. 若上题的数据经一趟排序后的排列为 {9,15,7,8, 是( )排序。 A .选择 B.堆 C.直接插入 D.冒泡 7. 在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是( ) A .直接插入排序 B .冒泡排序 C .简单选择排序 8. 下列排序算法中,( )算法可能会出现下面情况:在最后一趟开始之前, 所有元素都不在其最终的位置上。 A.堆排序 B.冒泡排序 C.快速排序 D.插入排序 9. 下列排序算法中,占用辅助空间最多的是: A.归并排序 B.快速排序 10. 用直接插入排序方法对下面四个 序列进行排序(由小到大),元素比较次数 最少的是( )O A . 94,32,40,90,80,46,21,69 B . 32,40,21,46,69,94,90,80 C . 21,32,46,40,80,69,90,94 D . 90,69,80,46,21,32,94,40 11. 若用冒泡排序方法对序列{10,14,26,29,41,52}从大到小排序,需进行 ( ) 4.对一组数据(84,47,25, 的变化为(1) 84 47 25 15 21 C.快速 D.插入 )排序。 C.希尔 D.冒泡 20, -1 , 4},则采用的 C.希尔排序 D.堆排序

相关文档