- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
习题一
简要回答术语:数据,数据元素,数据结构,数据类型。
答:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并倍计算及程序处理的符号总称;数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理;数据结构是相互之间存在一种或多种特定关系的数据元素的集合;数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
数据的逻辑结构?数据的物理结构?逻辑结构与物理结构的区别和联系是什么?
答:逻辑结构是从操作对象抽象出来的数学模型,结构定义中的“关系”描述的是数据元素之间 的逻辑关系;物理结构是数据结构在计算机中的表示(又称映像),又称存储结构。物理结构是指数据具体存放在哪个位置,逻辑结构是指数据高数据间是怎样联系的。
数据结构的主要运算包括哪些?
答:数据结构的主要包括集合、线性结构、树形结构和网状结构。
算法分析的目的是什么?算法分析的主要方面是什么?
答:算法分析的目的是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。算法分析的主要方面是空间复杂性和时间复杂性。
分析以下程序段的时间复杂度,请说明分析的理由或原因。
⑴
Sum1( int n )
{ int p=1, sum=0, m ; for (m=1; m=n; m++)
{ p*=m ; sum+=p ; } return (sum) ;
}
解:T(n)=O(n)
⑵
Sum2( int n )
{ int sum=0, m, t ; for (m=1; m=n; m++)
{ p=1 ;
for (t=1; t=m; t++) p*=t ; sum+=p ;
}
return (sum) ;
}
解:T(n)=O(n2)
)
⑶ 递归函数(选做)
fact( int n )
{ if (n=1) return(1) ; else return( n*fact(n-1)) ;
}
解:T(n)=O(n*(n+1)/2)
习题二
简述下列术语:线性表,顺序表,链表。
答:线性表是最常用且最简单的一种数据结构,一个线性表是n 个数据元素的有限序列;顺序表是用一组地址连续的存储单元依次存储线性表的数据元素;链表是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以使连续的,也可以是不连续的)。
何时选用顺序表,何时选用链表作为线性表的存储结构合适?各自的主要优缺点是什么? 答:在实际应用中,应根据具体问题的要求和性质来选择顺序表或链表作为线性表的存储结 构,通常要作以下考虑:1.基于空间的考虑。当要求存储的线性表长度变化不大,易于事先确
定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表变化大,难以估计其存储规模时,则更宜采用动态链表。2.基于时间的考虑。当线性表的操作主要是进行查找,很少做插 入和删除操作时宜采用顺序表存储结构;反之,当需要对线性表进行频繁插入或删除等操作 时,则宜采用链表存储结构。当链表的插入和删除主要发生在表的首尾两端,则采用指针表示的单循环链表更好。
链表所表示的元素是否有序?如有序,则有序性体现于何处?链表所表示的元素是否一定要在物理上是相邻的?有序表的有序性又如何理解?
答:有序。它要先进行循环比较,找到插入的元素应该插入的位置,然后改变此位置前后节点和该插入节点三个节点的指针指向。
设 A 和 B 是两个按元素值递增有序的单链表,写一算法将A 和 B 归并为按按元素值递减有序的单链表C,试分析算法的时间复杂度。
答:node *mergelink(node *p, node *q)
{
node *h, *r;
h = (node*) malloc (sizeof(node)); h-next = NULL;
r = h;
while (p != NULL q != NULL)
{
if (p-data = q-data)
{
}
else
{
}
}
r-next = p; r = p;
p = p-next;
r-next = q; r = q;
q = q-next;
if (p == NULL)
r-next = q; if (q == NULL)
r-next = p;
p = h-next; h = h-next; free(p); return h;
}
原创力文档


文档评论(0)