- 27
- 0
- 约2.29万字
- 约 18页
- 2021-05-30 发布于上海
- 举报
1.3 设 n 是正整数。试写出下列程序段中用记号“△”标注的语句的频度:
(2) i=1; k=0;
do {
△ k+=10*i;
i++;
}while(i=n-1)
当 n=1 时,执行 1;
当 n=2 时,执行 n-1 次;
(3) i=1; k=0;
do {
△ k+ = 10*i; i++;
}while(i==n);
当 n=2 时,执行 2 次;
当 n!=2 时,执行 1 次;
(4) i=1; j=0;
while(i+j ≤n) {
△ if(ij) i++; else j++;
}
执行 n 次;
(5) x=n; y=0; //n 是不小于 1 的常数
while(x=(y+1)*(y+1)){
△ y++;
}
执行 向下取整 )
(6) x=91; y=100;
while ( y0 )
△ if(x100) { x-=10; y--; }
else x++ ;
}
If 语句执行 100 次
(7) for( i=0; in; i++)
for( j=i; jn; j++)
for( k=j; kn; k++)
△ x+=2;
n 1 n 1
过程: (n j) n(n 1)(n 2)
i 0 j i 6
第二章
2.3 已知顺序表 La 中数据元素按非递减有序排列。试写一个算法,将元素 x 插
到 La 的合适位置上,保持该表的有序性。
思路:先判断线性表的存储空间是否满,若满返回 Error ;否则从后向前先移动
数据,找到合适的位置插入。
Status Insert_SqList(SqList La,int x)// 把x 插入递增有序表 La 中
{
if(La.length==La.listsize) return ERROR;
for(i=La.length-1;La.elem[i]xi=0;i--)
La.elem[i+1]=La.elem[i];
La.elem[i+1]=x;
La.length++;
return OK;
}//Insert_SqList
2.5 试写一个算法,实现顺序表的就地逆置,即在原表的存储空间将线性表
(a1,a 2 , ..., a n-1 ,a n )逆置为 (a n,a n-1 , ..., a 2,a 1 )
// 思路就是两个指示变量 i ,j 同时分别从顺序表的开始和结尾处相向改变
void reverse(SqList A)// 顺序表的就地逆置
{
ElemType p;
for(i=1,j=A.length;ij;i++,j--)
{
//A.elem[i]-A.elem[j];
p=A.elem[i];
A.elem[i[=A.elem[j];
A.elem[j]=p;
}
}//reverse
2.7 已知线性表 L 采用顺序存储结构存放, 对两种不同情况分别写出算法, 删除
L 中多余的元素,使得 L 中没有重复元素:( 1)L 中数据元素无序排列; (2)L
中数据元素非递减有序排列。
void Delete_SameElem(Sq
原创力文档

文档评论(0)