我們以前在介紹排序演算法的時候介紹過一種排序演算法叫做歸併排序,我們現在需要思考乙個問題,能不能利用歸併的思想對兩個有序的單向鍊錶進行合併。
/*** 對兩個有序鍊錶進行有序合併
* *
@param
head1
* @param
head2
* @return
*/public
node mergelist(node head1, node head2)
if (head1 == null
)
if (head2 == null
)
//定義兩個節點
node first = null
; node current = null
;
//選取頭結點
if (head1.date >head2.date)
else
//對兩個鍊錶進行合併
while (head1 != null && head2 != null
) else
}//對剩下的節點進行合併
while (head1 != null
)
while (head2 != null
)
return
first;
}
請把這個方法放在單向鍊錶的第一篇基礎方法裡面進行測試即可,我們通過**可以很清楚的觀察到通篇利用的就是歸併的思想,對於兩個有序鍊錶的整合。但是我們在這裡需要提出注意的是,對於空指標這一項的控制,也就是對於鍊錶為空的控制,這時鍊錶進行操作時比較忌諱的問題。一定要提前對鍊錶是否為空,或者對應節點是否為空進行應該有的判斷。
資料結構之單向鍊錶
結構體 指標 更強大的資料結構 分類 1 頭指標式鍊錶 不實用很麻煩 2 頭結點式鍊錶 常用 節點 typedef int data 常用操作 1建立 2摧毀3增加 4刪除5查詢 6修改7逆序 ifndef linklist h define linklist h typedef enum bool...
資料結構之鍊錶合併演算法
鍊錶合併演算法 包括一些基本運算 includeusing namespace std typedef char datatype 結點資料型別,假設為char typedef struct node pointer 結點指標型別 struct node 結點結構 typedef pointer l...
資料結構 三 單向無序鍊錶
單向列表在開發中屬於常見的一種資料結構.其實他就是把乙個元素串接在另乙個元素後面.如何實現?第一步 建立物件類 package com.xbb.demo.linked public class heronode public intgetid public void setid int id pub...