计算机软件基础习题及答案.doc

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
习题一 1.什么是数据结构,数据的逻辑结构,数据的存储结构?数据结构对算法有什么影响?请举例说明。 2.数据结构的存储方式主要有哪两种?它们之间的本质区别是什么? 3.设n为正整数, 分析下列各程序段中加下划线的语句的执行次数。 (1) for (int i = 1; i = n; i++) for (int j = 1; j = n; j++) { c[i][j] = 0.0; for (int k = 1; k = n; k++) c[i][j] = c[i][j] + a[i][k] * b[k][j]; } (2) x = 0; y = 0; for (int i = 1; i = n; i++) for (int j = 1; j = i; j++) for (int k = 1; k = j; k++) x = x + y; (3) int i = 1, j = 1; while (i=n j=n) { i = i + 1; j = j + i; } (4)* int i =1; do{ for (int j = 1; j = n; j++) i = i + j; }while(i100 + n); 4.试编写一个函数计算n!*2n的值,结果存放于数组A[arraySize]的第n个数组元素中,0 ? n ? arraySize。若设计算机中允许的整数的最大值为maxInt,则当narraySize或者对于某一个k (0 ? k ? n),使得k!*2k maxInt时,应按出错处理。可有如下三种不同的出错处理方式: (1) 用printf显示错误信息及exit(1)语句来终止执行并报告错误; (2) 用返回整数函数值0, 1来实现算法,以区别是正常返回还是错误返回; (3) 在函数的参数表设置一个引用型的整型变量来区别是正常返回还是某种错误返回。 试讨论这三种方法各自的优缺点,并以你认为是最好的方式实现它。 5.设有一个线性表 (a0, a1, …, an-2, an-1) 存放在一个一维数组A[arraySize]中的前n个数组元素位置。请编写一个函数将这个线性表原地逆置,即将数组的前n个原址内容置换为 (an-1, an-2, …, a1, a0)。最后分析此算法的时间复杂度及空间复杂度。 6.顺序表的插入和删除要求仍然保持各个元素原来的次序。设在等概率情形下, 对有127个元素的顺序表进行插入, 平均需要移动多少个元素? 删除一个元素, 又平均需要移动多少个元素? 7.利用顺序表的操作,实现以下的函数。并分析你所编制的函数的时间复杂度,并分析(2)与(3)的时间复杂度出现差异的原因。 (1) 从顺序表中删除具有给定值x的所有元素。 (2) 从顺序表中删除其值在给定值s与t之间(要求s小于t)的所有元素。 (3) 从有序顺序表中删除其值在给定值s与t之间(要求s小于t)的所有元素。 (4) 将两个有序顺序表la,lb合并成一个新的有序顺序表lc。 (5) 从顺序表中删除所有其值重复的元素,使表中所有元素的值均不相同。 8.线性表可用顺序表或链表存储。试问: (1) 两种存储表示各有哪些主要优缺点? (2) 如果有n个表同时并存,并且在处理过程中各表的长度会动态发生变化,表的总数也可能自动改变、在此情况下,应选用哪种存储表示?为什么? (3) 若表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取表中的元素,这时,应采用哪种存储表示?为什么? 9.试写出计算线性链表长度的算法。 10.设有一个表头指针为h的单链表。试设计一个算法,通过遍历一趟链表,将链表中所有结点的链接方向逆转,如下图所示。要求逆转结果链表的表头指针h指向原链表的最后一个结点。 11.设有一线性链表,其结点值均为整数。试将该线性链表分解为两个线性链表,其中一链表中的结点值均为负整数,而另一链表中结点的值均为正整数,并删除结点值为零的结点。 12.设ha和hb分别是两个带表头结点的非递减有序单链表的表头指针, 试设计一个算法, 将这两个有序链表合并成一个非递减有序的单链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中允许有重复的数据。 13.设ha和hb分别是两个带表头结点的非递减有序单链表的表头指针, 试设计一个算法, 将这两个有序链表合并成一个非递增有序的单链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中允许有重复的数据。 14.在一个循环

文档评论(0)

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

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

1亿VIP精品文档

相关文档