合併兩個非遞減有序的單迴圈鍊錶

2021-10-25 04:11:16 字數 1219 閱讀 6612

合併兩個非遞減有序的單迴圈鍊錶

本題要求實現乙個合併函式,實現對有序單迴圈鍊錶tail1和tail2的合併,要求合併時實現去重操作,即合併後的鍊錶中沒有重複的元素,並且合併後的鍊錶為遞增有序鍊錶。

函式介面定義:

pnode mergendeduplicatelist(pnode tail1, pnode tail2);

其中tail1是待合併的第乙個有序單迴圈鍊錶,採用的尾指標表示方法;tail2是待合併的第二個有序單迴圈鍊錶,採用的尾指標表示方法;裁判測試程式樣例:

#include

#include

typedef int datatype;

struct node

;typedef struct node node;

typedef struct node *pnode;

typedef struct node *linklist;

pnode createemptylinkedlist()

pnode buildcircularlinkedlist(int n, pnode tail)

current->next = tail->next;

tail->next = current;

return tail;

}pnode mergendeduplicatelist(pnode tail1, pnode tail2)

void printcircularlinkedlist(pnode tail)

while (current != last->next);

}int main()

輸入樣例:5

1 2 2 3 6

62 6 6 9 15 19

輸出樣例:1 2 3 6 9 15 19

c (gcc 6.5.0)

pnode mergendeduplicatelist(pnode tail1,pnode tail2)

else

}elseelse

}}while(p1!=last1&&p2!=last2);

if(p1last1)else

}while(p2!=last2->next);

}elseelse

}while(p1!=last1->next);

}p3->next=tail1->next;

tail1->next=p3;

return tail1;

}

非遞減有序鍊錶的合併

任務管理器關閉後台執行的程式以免出現錯誤 問題描述 利用鍊錶儲存結構實現非遞減有序表的合併 分析 鍊錶不需要額外開闢儲存空間,可以直接利用原鍊錶空間 建立兩表元素之間新的鏈結即可 include include 流 include include 包含exit標頭檔案 include include...

將兩個非遞減的有序鍊錶合併為乙個非遞增的有序鍊錶

void mergelist linklist la,linklist lb,linklist lc,la表為空,用q指向pb,pb指標後移 else if pb lb表為空,用q指向pa,pa指標後移 else if pa data pb data 取較小者 包括相等 la中的元素,用q指向pa,...

合併兩個有序鍊錶

鍊錶的題目總是讓我很惆悵。動輒就會runtime error。比如這題,額外用了乙個節點的空間來儲存頭節點。我很不情願多用這個空間,不過貌似不行。貌似不行,實際可行,見附錄。把頭節點提出迴圈 實現類 class solution else if l1 null p next l1 if l2 nul...