生成隨機長度的鍊錶
將單向鍊錶按某值劃分成左邊小、中間相等、右邊大的形式。注意 給定的值是任意的。
建立小,等,大3組共6個啞節點。
把小於給定值的節點鏈結到l節點後
把等於給定值的節點鏈結到m節點後
把大於給定值的節點鏈結到r節點後
使用啞節點, 把這三部分鍊錶鏈結起來,不需要討論某部分為空的情形,比設定頭尾指標為none**更簡潔
def
partion
(head, pivot)
: l = lhead = node(
none
,none
) m = mhead = node(
none
,none
) r = rhead = node(
none
,none
)while head:
post = head.
next
if head.val < pivot:
l.next
= head
head.
next
= mhead
l = head
elif head.val == pivot:
m.next
= head
head.
next
= rhead
m = head
else
: r.
next
= head
head.
next
=none
r = head
head = post
l.next
= mhead.
next
m.next
= rhead.
next
return lhead.
next
荷蘭國旗問題(鍊錶)
用三個桶,每個桶包括 鍊錶的頭和鍊錶的尾 三個桶分別是less,equal,more.遍歷一次鍊錶把數值放入相應的桶。public class test demo public static node lessequalmore node head,int num else if head.valu...
鍊錶(三)鍊錶形式的荷蘭國旗
問題 給定乙個單向鍊錶的頭節點head,節點的值型別是整型,再給定乙個整數point。實現乙個調整鍊錶的函式,將鍊錶調整為左部分都是值小於pointt的節點,中間部分都是值等於pivot的節點,右部分都是值大於point的節點。除這個要求外,對調整後的節點順序沒有更多的要求。第一種解法 類似於荷蘭國...
十一 把鍊錶分為小中大三個部分
將單向鍊錶按某值劃分成左邊小 中間相等 右邊大的形式 要求 1.要求每部分裡的節點從左 到右的順序與原煉表中節點的先後次序一致。2.時間複雜度請達到o n 額外空間複雜度請達到o 1 分析 因為要求穩定性,空間複雜度o 1 所以快速排序不行。1.提供三個容器 small,equal,big 2.每個...