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