c語言將兩個迴圈鍊錶合併成乙個迴圈鍊錶 16

2021-09-18 00:19:57 字數 948 閱讀 7590

這道題我是直接將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 兩...