计算机软件学基础答案,计算机软件基础习题附标准标准答案.doc

个人收集整理 仅供参考学习

个人收集整理 仅供参考学习

PAGE / NUMPAGES

个人收集整理 仅供参考学习

习题一

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(i<100 + n);

4.试编写一个函数计算n!*2n地值,结果存放于数组A[arraySize]地第n个数组元素中,0 ? n ? arraySize.若设计算机中允许地整数地最大值为maxInt,则当n>arraySize或者对于某一个k (0 ? k ? n),使得k!*2k > maxInt时,应按出错处理.可有如下三种不同地出错处理方式:b5E2RGbCAP

(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).最后分析此算法地时间复杂度及空间复杂度.p1EanqFDPw

6.顺序表地插入和删除要求仍然保持各个元素原来地次序.设在等概率情形下, 对有127个元素地顺序表进行插入, 平均需要移动多少个元素? 删除一个元素, 又平均需要移动多少个元素?DXDiTa9E3d

7.利用顺序表地操作,实现以下地函数.并分析你所编制地函数地时间复杂度,并分析(2)与(3)地时间复杂度出现差异地原因.RTCrpUDGiT

(1) 从顺序表中删除具有给定值x地所有元素.

(2) 从顺序表中删除其值在给定值s与t之间(要求s小于t)地所有元素.

(3) 从有序顺序表中删除其值在给定值s与t之间(要求s小于t)地所有元素.

(4) 将两个有序顺序表la,lb合并成一个新地有序顺序表lc.

(5) 从顺序表中删除所有其值重复地元素,使表中所有元素地值均不相同.

8.线性表可用顺序表或链表存储.试问:

(1) 两种存储表示各有哪些主要优缺点?

(2) 如果有n个表同时并存,并且在处理过程中各表地长度会动态发生变化,表地总数也可能自动改变、在此情况下,应选用哪种存储表示?为什么?5PCzVD7HxA

(3) 若表地总数基本稳定,且很少进行插入和删除,但要求以最快地速度存取表中地元素,这时,应采用哪种存储表示?为什么?jLBHrnAILg

9.试写出计算线性链表长度地算法.

10.设有一个表头指针为h地单链表.试设计一个算法,通过遍历一趟链表,将链表中所有结点地链接方向逆转,如下图所示.要求逆转结果链表地表头指针h指向原链表地最后一个结点.xHAQX74J0X

11.设有一线性链表,其结点值均为整数.试将该线性链表分解为两个线性链表,其中一链表中地结点值均为负整数,而另一链表中结点地值均为正整数,并删除结点值为零地结点.LDAYtRyKfE

12.设ha和hb分别是两个带表头结点地非递减有序单链表地表头指针, 试设计一个算法, 将这两个有序链表合并成一个非递减有序地单链表.要求结果链表仍使用原来两个链表地存储空间, 不另外占用其它地存储空间.表中允许有重复地数据.Zzz6ZB2Ltk

13.设ha和hb分别是两个带表头结点地非递减

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值