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

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

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在数据结构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)

zhanghaoyu888 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档