[DAY1]数据结构代码题学习笔记
题目
将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果到顺序表
代码设计思路
设两个有序表分别为A、B,新有序表为C,现在将A、B中较小元素轮流存放至C中,当比较完成剩余没存放的直接存放进C中。
实现代码
bool merge(SqlList A,SqlList B,SqlList &C)//引入三个顺序表
if(A.length+B.lenth>C.MaxSize)//判定算法是否合法
return false;
int i=0,j=0,k=0;
while(i<A.lenth&&j<B.lenth)
//当A中元素小于B中元素时,A中元素存放到C中
if(A.data[i]<B.data[j])
C.data[k]=A.data[i];
i++;
k++;
//当B中元素小于B中元素时,B中元素存放到C中
if(B.data[j]<A.data[i])
C.data[k]=A.data[j];
j++;
k++;
//判断AB中是否还有元素没存放进C
while (i<A.lenth)
i++;
k++;
C.data[k]=A.data[i];
while (j<B.lenth)
j++;
k++;
C.data[k]=b.data[j];
C.lenth=k;
return true;