- 47
- 0
- 约4.58千字
- 约 5页
- 2016-05-23 发布于重庆
- 举报
数据结构综合复习题
第一章 综合练习
2.什么是数据结构? 有关数据结构的讨论涉及哪三个方面?
【解答】
数据结构是指数据以及相互之间的关系。记为:数据结构 = { D, R }。其中,D是某一数据对象,R是该对象中所有数据成员之间的关系的有限集合。
有关数据结构的讨论一般涉及以下三方面的内容:
数据成员以及它们相互之间的逻辑关系,也称为数据的逻辑结构,简称为数据结构;
② 数据成员其关系在计算机存储器内的存储表示,也称为数据的物理结构,简称为存储结构;
施加于该数据结构上的操作。
数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储不是一码事,是与计算机存储无关的。因此,数据的逻辑结构可以看作是从具体问题中抽象出来的数据模型,是数据的应用视图。数据的存储结构是逻辑数据结构在计算机存储器中的实现(亦称为映像),它是依赖于计算机的,是数据的物理视图。数据的操作是定义于数据逻辑结构上的一组运算,每种数据结构都有一个运算的集合。例如搜索、插入、删除、更新、排序等。
5.设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(i=1;i=n;i++)
for(j=1;j=i;j++)
for(k=1;k=j;k++)
x=x+y;
(3) i=1; j=1;?
while(i=nj=n)
{ i=i+1; j=j+i; } ?
i=1;
do {
for(j=1;j=n;j++) i=i+j;
} while(i100+n);
【解答】
(1)
(2)
i = 1时,i = 2,j = j + i = 1 + 2 = 2 + 1,
i = 2时,i = 3,j = j + i = ( 2 + 1 ) + 3 = 3 + 1 + 2,
i = 3时,i = 4,j = j + i = ( 3 + 1 + 2 ) + 4 = 4 + 1 + 2 + 3,
i = 4时,i = 5,j = j + i = ( 4 + 1 + 2 + 3 ) + 5 = 5 + 1 + 2 + 3 + 4,
……i = k时,i = k + 1,j = j + i = ( k + 1 ) + ( 1 + 2 + 3 + 4 + … + k ),
解出满足上述不等式的k值,即为语句i = i + 1的程序步数。(4)
求出满足此不等式的k值,即为语句i = i + j的程序步数。
第二章 综合题
2. 顺序表的插入和删除要求仍然保持各个元素原来的次序。设在等概率情形下, 对有150个元素的顺序表进行插入,平均需要移动多少个元素? 删除一个元素,又平均需要移动多少个元素?
3. 已知在一维数组A[1..m+n]中依次存放着两个向量(a1,a2,….am)和(b1,b2,….bn),编写算法将两个向量的位置互换,即把(b1,b2,….bn)放到(a1,a2,….am)之前。
[题目分析] 题目要求将两个向量逆置,可以先将两个向量分别逆置,再将整个向量逆置。(也可以先将整个向量逆置, 再将两个向量分别逆置) void reverse(ElemType A[])
//数组A中有m+n个元素,本算法将两个向量逆置,即将前m个元素移至n个元素之后
{ int i;
for (i=1;i=m/2;i++) //将前m个元素逆置
A[i]--A[m-i+1]
for (i=1;i=n/2;i++) //将后n个元素逆置
A[m+i]--A[m+n-i+1]
for (i=1;i=(m+n)/2;i++) //将前m+n个元素逆置
A[i]--A[m+n-i+1]
}//算法结束
【算法讨论】题目中下标从1开始,若用C语言的从0开始,则可写为:
for (i=0;im/2;i++) //将前m个元素逆置
A[i]--A[m-i-1]
for (i=0;in/2;i++) //将后n个元素逆置
A[m+i]--A[m+n-i-1]
for (i=0;i(m+n)/2;i++) //将前m+n个元素逆置
A[i]--A[m+n-i-1]
4. 给定一个不带头结点的单链表,编写计算此链表长度的算法。
[题目分析] 计算单链表的长度,即求单链表中元素个数。
int number(
原创力文档

文档评论(0)