鍊錶的荷蘭國旗問題 分成小中大三部分 啞節點實現

2021-10-06 11:51:42 字數 983 閱讀 1191

生成隨機長度的鍊錶

將單向鍊錶按某值劃分成左邊小、中間相等、右邊大的形式。注意 給定的值是任意的。

建立小,等,大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.每個...