C语言将两个有序顺序表合并成一个有序顺序表
这里涉及到数据结构中顺序表的实现、删除、插入、查找等知识,请查看:数据结构 -> 线性表
本题代码如下:
问题描述:
将两个有序顺序表合并成一个新的有序顺序表,并由函数返回结果顺序表。问题解答:
算法思想:首先,按顺序不断取下两个顺序表表头较小的结点存入新的顺序表中。然后,看哪个表还有剩余,将剩下的部分加到新的顺序表后面。本题代码如下:
bool Merge(SeqList A, SeqList B, SeqList &C){ //合并有序顺序表A与B成为一个新的有序顺序表C if(A.length+B.length>C.maxSize) //大于顺序表的最大长度 return false; int i=0,j=0,k=0; while(i<A.length && j<B.length){ //循环,两两比较,小者存入结果表 if(A.data[i] < B.data[j]) C.data[k++] = A.data[i++]; else C.data[k++]=B.data[j++]; } while(i<A.length) //还剩一个没有比较完的顺序表 C.data[k++] =A.data[i++]; while(j<B.length) C.data[k++] = B.data[j++]; C.length=k; return true; }注,本算法的方法非常典型,需牢固掌握。