网站大量收购独家精品文档,联系QQ:2885784924

数据结构(C语)清华大学出版社 课后题1-5章答案.doc

数据结构(C语)清华大学出版社 课后题1-5章答案.doc

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

第一章 选择题 1.A 2.B 3.C 4.D 5.B 6.C 第二章 选择题 1.A 2.D 3.D 4.C 5.A 6.C 7.B 8.B 9.D 10.D 应用题 1. 应该选用链接存储表示。如果才用顺序表示法,必须在一个连续的可用空间中为这N个表分配空间。初始时候因为不知道哪个表增长得快,必须平均分配空间。在程序运行过程中,有的表占用的空间增长得快,有的表占用空间增长得慢,有的表很快就使用完了分配给它的空间,有的表才占用了少许空间,在进行元素的插入时候就必须成片的移动其他表的空间,以空出位置进行插入;在元素删除时为填补空白,也可能移动许多元素。这个处理过程及其繁琐和低效。 如果采用链接存储,一个表的空间可以连续也可以不连续。表的增长通过动态分配内存得以解决,只要存储器未满,就不会发生表溢出;表的收缩可以通过动态存储释放实现,释放的空间还可以在以后动态分配给其他的存储需求,非常灵活方便。对于N个表(包括表的总数可能变化)共存的情形,处理十分简单快捷,插入、删除时间复杂度为O(1)。所以才用链接存储表示较好。 2. 一般来说,链式存储结构克服了顺序存储结构的三个缺点。首先,插入、删除操作不需要移动元素,只修改指针;其次,不需要预先分配空间,可根据需要动态申请空间;其三,表容量只受到内存空间的限制。其缺点是因为指针增加了空间开销,当空间不允许时,就不能克服顺序存储的缺点。 3. 顺序结构时ai与ai+1的物理位置相邻,链表结构时两者的位置不要求一定相邻。 7. 在顺序表中插入和删除一个节点需平均移动全表一半的节点。具体的移动次数取决于所插入和删除的节点的位置i和全表的长度n这两个因素。 算法设计题 分析:遍历整个顺序表,用k记录在x~y之间元素的个数,k的初始值为0。对于当前遍历到的元素,若其值在x~y之间,则前移k个位置;否则执行++k。这样每个不在x~y之间的元素仅仅移动一次,所以效率较高。 void Delete_xy SeqList *A,int x,int y int k; k 0; for i 0;i A- length;++i if A- data[i] x A- data[i] y k++; else A- data[i-k] A- data[i]; /* 当前元素前移k个位置 */ A- length A- length - k; /* 线性表长度减小 */ 2.设集合A和B分别用两个递增有序的单链表表示,其中他们的头指针是pa和pb。求A交B的操作就是对A扫描,如果当前的扫描到的元素在B中出现则保留,否则删除。 LinkList AbingB LinkList A,LinkList B LinkList pa,pb,pre; pa A- next; pb B- next; pre A; while papb if pa- data pb- data /* 若大于,则pb指针后移 */ q pa; pa pa- next; pre- next pa; free q ; else /* 相等,保留,pa、pb指针后移 */ pre pa; pa pa- next; pb pb- next; while pa /* 若单链表A没有遍历完,则将剩余节点删除 */ q pa; pa pa- next; free q ; pre- next NULL; return A ; 本算法的时间开销主要是遍历,故时间复杂度为O n 分析:依次遍历访问单链表的节点,用冒泡排序的思想将该链表整理成有序。冒泡排序算法的基本思想比较简单:两两比较元素,值域小的元素前置,直到不再发生交换。 LinkList Sort_LinkList LinkList L int x,noswap; LinkList pa,pb; pa L- next; noswap 1; if pa while noswap noswap 0; pb pa- next; while pb pb- next! NULL if pb- data pb- next- data x pb- data; pb- data pb- next- data; pb- next- data x; noswap 1; pb pb- next; 本算法的时间效率是O n^2 ,效率相对较低,本题其他高效求解算法可参见第9章中介绍的其他排序算法。另外本题中交换节点才用交换值域,另一种方法是交换指针,这样做比较复杂,读者可以尝试编程解决。 第三章 选择题 1.C

文档评论(0)

qqmqq1 + 关注
内容提供者

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

1亿VIP精品文档

相关文档