文档详情

数据结构(C语言版)(第三版)(微课版)习题参考答案.doc

发布:2024-11-19约2.1万字共29页下载文档
文本预览下载声明

?PAGE294?

数据结构(C语言)微课版

?PAGE293?

附录习题参考答案

附录习题参考答案

第1章习题参考答案

一、选择题

1.C

2.C

3.B

4.A

5.D

6.D

7.C

8.C

9.B

10.C

二、填空题

1.线性结构非线性结构 2.顺序存储结构链式存储结构

3.联系图(或图结构) 4.集合、图

5.一对一一对多 6.数据元素关系

7.后继任意多个 8.操作对象关系

9.没有没有 10.逻辑结构存储结构

11.前驱1 12.顺序索引

三、判断题

1.×

2.√

3.×

4.×

四、简答题

1.因为x++共执行了n-1+n-2+……+1=n(n-1)/2,所以执行时间为O(n2)

2.O(log3n) 3.O(n2) 4.O(m*n)

第2章习题参考答案

一、选择题

1.D

2.B

3.B

4.B

5.B

6.B

7.D

8.B

9.C

10.B

11.C

12.C

13.B

14.D

15.C

16.B

17.B

18.C

19.A

20.C

21.D

22.A

23.A

24.C

二、填空题

1.首元素其直接前驱结点的链域的值 2.HL→next==NULL;HL==HL→next

3.有限、一对一 4.O(1)随机存取

5.表中一半表长和该元素在表中的位置 6.必定不一定

7.O(1)O(n) 8.前驱结点的地址O(n)

9.n-i+1n-i 10.s-left=pp-right

三、判断题

1.×

2.×

3.×

4.×

5.×

6.×

7.√

8.×

9.×

10.×

11.×

四、简答题

1.线性表为:(78,50,40,60,34,90)

2.(36,12,8,50,25,5,15)

3.解答:

尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear-next-next和rear,查找时间都是O(1)。

若用头指针来表示该链表,则查找终端结点的时间为O(n)。

五、编程题

1.解答:由于在单链表中只给出一个头指针,所以只能用遍历的方法来数单链表中的结点个数了。算法如下:

intListLength(LinkListL)

{intlen=0;

ListNode*p;

p=L;//设该表有头结点

while(p-next)

{p=p-next;

len++;

}

returnlen;

}

2.intsearchmin(linklistl)

{intmin;

int*p;

p=l;

min=p-data;

p=p-next;

while(p-next!=NULL)

{if(minp-data)min=p-data;

p=p-next;

}

returnmin;

}

3.intsearchmax(linklistl)

{intmax;

int*p;

p=l;

max=p-data;

p=p-next;

while(p-next!=NULL)

{if(maxp-data)max=p-data;

p=p-next;

}

returnmax;

}

4.顺序表:要将该表逆置,可以将表中的开始结点与终端结点互换,第二个结点与倒数第二个结点互换,如此反复,就可将整个表逆置了。

算法如下:

voidReverseList(Seqlist*L)

{DataTypetemp;//设置临时空间用于存放data

inti;

for(i=0;i=L-length/2;i++)//L-length/2为整除运算

{temp=L-data[i];//交换数据

L-data[i]=L-data[L-length-1-i];

L-data

显示全部
相似文档