這道題我是直接將l1的尾鍊錶指標指向l2的頭鍊錶指標,然後釋放l2的頭鍊錶指標,然後將l2的尾鍊錶指標指向l1的頭鍊錶指標(merge1函式)
但是答案的話是利用頭插法將長度短的鍊錶插入到長度長的鍊錶(merge2函式)
兩個我都實現了
**
#include#include#include//這一題高階到迴圈單鏈表了
typedef struct node
node;
typedef struct list
list;
void print_list(list l)
printf("\n");
printf("list length is %d\n",l.length);
}void init_list(list * l)
}//這是直接改變頭尾指標法
void merge(list* l1,list l2)
//我看到答案是因為沒有頭尾指標,它是把短的那個鍊錶插入到長的鍊錶的前面
//為了要效率更快,所以找出長度短的那個插入
//這裡為了練習,採用頭插法的方式
void merge2(list* l1, list*l2)
l1->length += l2->length;
print_list(*l1);
}else
l2->length += l1->length;
print_list(*l2); }}
int main(int argc, char const *ar**)
執行截圖
將兩個有序鍊錶合併成乙個有序鍊錶
c codes as below class link public static link mergesortedlink link firstlink,link secondlink while currentnode2.next null else if currentnode1 null r...
將兩個有序鍊錶合併成乙個有序鍊錶
題目 給定兩個有序的鍊錶,編寫乙個函式來合併這兩個鍊錶,並且返回乙個新的有序的鍊錶 分析 這兩個鍊錶已經有序,所以,只需要對著兩個鍊錶的元素依次進行比較即可,這是對兩個鍊錶操作的基本問題。include stdafx.h include using namespace std struct list...
如何將兩個有序鍊錶合併成乙個鍊錶
具體思想就是新建乙個鍊錶,然後比較兩個鍊錶中的元素值,把較小的那個鏈到新鍊錶中,由於兩個輸入鍊錶的長度可能不同,所以最終會有乙個鍊錶先完成插入所有元素,則直接將另乙個未完成的鍊錶直接鏈入新鍊錶的末尾。1 遞迴演算法 也容易理解,但是它的弊端也很明顯時間空間開銷都很大,效率低 2 非遞迴演算法 1 兩...