数据结构(C语言)第2版-课后习题答案.docVIP

  • 859
  • 1
  • 约2.29万字
  • 约 37页
  • 2024-08-08 发布于广东
  • 举报
在数据结构C语言第2版课后习题答案中,包含了两个扩展题和一个简短的总结问题与答案1基础题A是C类型的数据结构B是D类型的数据结构C是E类型的数据结构2扩展题A数据结构是根据某种逻辑关系组织起来的数据元素的集合B数据结构是按照某种逻辑关系组织起来的数据元素的集合C数据结构是组成数据元素的不可分割的最小单位3简短的总结

第1章绪论

一、基础题

1.A2.C3.C4.A5.C

二、扩展题

1.数据是计算机加工处理的对象;数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理;数据项是组成数据元素的、不可分割的最小单位。

2.数据结构是按某种逻辑关系组织起来的数据元素的集合,使用计算机语言描述并按一定的存储方式存储在计算机中,并在其上定义了一组运算。

3.集合结构、线性结构、树形结构和图形结构。集合结构中,元素之间没有关系;线性结构中,元素之间存在一对一的关系;树形结构中,元素之间存在一对多的关系,其中最多只有一个元素没有前驱元素,这个元素就是根;图形结构中,元素之间存在多对多的关系。

4.顺序存储、链式存储、索引存储和散列存储。

5.一个算法是对特定问题的求解步骤的一种描述,是指令的有限序列。其特征包括:→输入:算法有零个或多个输入

输出:算法至少产生一个输出

确定性:算法的每一条指令都有确切的定义,没有二义性。

→能行性/可行性:可以通过已经实现的基本运算执行有限次来实现

有穷性:算法必须总能在执行有限步之后终止

6.联系:程序是计算机指令的有序集合,是算法用某种程序设计语言的表述,是算法在计算机上的具体实现。

区别:在语言描述上不同,程序必须是用规定的程序设计语言来写,而算法的描述形式包括自然语言、伪代码、流程图和程序语言等;算法所描述的步骤一定是有限的,而程序可以无限地执行下去,比如一个死循环可以称为程序,但不能称为算法。

7.

正确性:算法的执行结果应当满足功能需求,无语法错误,无逻辑错误

简明性:思路清晰、层次分明、易读易懂,有利于调试维护

健壮性:当输入不合法数据时,应能做适当处理,不至于引起严重后果

效率:有效使用存储空间和有高的时间效率

最优性:解决同一个问题可能有多种算法,应进行比较,选择最佳算法

可使用性:用户友好性

8

(1)执行次数为n-1(n=2),n=1时执行1次;时间复杂度为O(n)。

(2)执行次数为「log?n|;时间复杂度为0(logn)

(3)执行次数为n2;时间复杂度为0(n2)

(4)执行次数为|Vn]+1;时间复杂度为0(vn)

第2章线性表

一、基础题

1.A

2.D

3.B

4.C

5.B

6.D

7.D

8.C

9.A

10.D

二、扩展题

1.编写程序实现对顺序表逆置。

voidInvert(seqList*L)

ElemTypetemp;

inti;

for(i=0;iL-n/2;i++)

temp=L-element[i];

Lelement[i]=L-element[L-n-i-1];

L-element[L-n-i-1]=temp;

}

2.编写程序将有序递增的单链表中数据值在a到b(a=b)之间的元素删除。StatusDeleteAb(SingleList*L,ElemTypea,ElemTypeb)

Node*p,*q;

if(!L-n)returnERROR;

p=L-first;

q=L-first;

while(pp-elementb)

{

if(p-elementa)

q=p;

p=p-link;

elseif(q==L-first)

q=p-link;

first=q;

L-free(p);

L-n--;

p=q;

else{

q-link=p-link;

free(p);

L-n--;

p=q-link;

returnOK:

3.编写程序删除单链表中所有关键字值为x的元素。

StatusDeleteX(SingleList*L,ElemTypex)

Node*q,*p,*temp;

if(!L-n)returnERROR;

q=NULL;

p=L-first;

while(p!=NULL)

if(p-element!=x)

q=p;

p=p-link;

else

{

if(q=NULL)

L-first=L-first-link;//删除的是头结点

else

p=q-link;

qlink=p-link;//从单链表中删除p所指向的结点

temp=p;

p=p-link;

free(temp);

L-n--;

4.编写程序实现对单链表的逆置。

voidinvert(singleList*L)

Node*p=L-first,*q;

L-first=NULL;

while(p)

q=p-link;

p-link=L-first;

L-first=p;

p=q;

}

5.编写程序实现将数据域值最小的元素放置在单链表的最前面。

StatusSwap(SingleL

文档评论(0)

1亿VIP精品文档

相关文档