早教吧 育儿知识 作业答案 考试题库 百科 知识分享

帮写一个算法假设有两个按元素值递增有序排列的有序表A和B,均以单链表作存储结构,请编写算法利用A表和B表中原有的结点将A表和B表归并成一个按元素值非递增有序排列的有序

题目详情
帮写一个算法
假设有两个按元素值递增有序排列的有序表A和B,均以单链表作存储结构,请编写算法利用A表和B表中原有的结点将A表和B表归并成一个按元素值非递增有序排列的有序表C. A=(1,2,3,4,6) B=(2,3,5,7,9) C=(9,7,6,5,4,3,3,2,1)最好写成可以上机操作的程序
▼优质解答
答案和解析
呵呵,数据结构有个有名的算法:归并排序,这个算法可以解决你的问题。自己可以网上找找,或找本数据结构的书,书里也有着算法。以下是严蔚敏的《数据结构(c语言版)》里归并排序里的核心算法,这个算法就是你要的把两个有序表归并成一个有序表。void Merge(RcdType SR[],RcdType &TR[],int i,int m,int n){ //将有序的SR[i..m]和SR[m+1..n]归并为有序的TR[i..n] for(j=m+1,k=i;i<=m&&j<=n;++k) //将SR中记录由小到大地并入TR { if(LQ(SR[i].key,SR[j].key)) TR[k]=SR[i++]; else TR[k]=SR[j++]; } if(i<=n) TR[k..n]=SR[i..m]; //将剩余的SR[i..m]复制到TR if(j<=n) TR[k..n]=SR[j..n]; //将剩余的SR[j..n]复制到TR} 注意:这是伪算法,不可直接用,自己看懂后改改就可以用了
看了 帮写一个算法假设有两个按元素...的网友还看了以下: