数据结构(C语言版)习题解答.pdfVIP

  • 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)

1亿VIP精品文档

相关文档