牛客網練習 鍊錶分割

2021-10-01 03:18:34 字數 796 閱讀 1512

編寫**,以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前

給定乙個鍊錶的頭指標 listnode* phead,請返回重新排列後的鍊錶的頭指標。注意:分割以後保持原來的資料順序不變。

一看到這道題我就想到了建立兩個鍊錶的想法,乙個鍊錶放小於指定x的所有節點,另乙個放大於等於的,最後將兩個鍊錶合二為一不就是要求的結果嗎

(1)記住兩個鍊錶的頭節點,在拼接時需要用到

(2)考慮空異常

未實現的思路:

既然可以這樣弄兩個鍊錶,那麼為什麼不這樣(建立乙個鍊錶就可以)呢?

將小於x的節點頭插到該鍊錶,大於等於的尾插到該鍊錶,最後形成的鍊錶不就是答案嗎。

我實現的是兩個鍊錶的(可以優化的地方:將尾插演算法抽取出來為乙個方法):

public listnode partition

(listnode phead,

int x)

else

}else

else

} phead = phead.next;}if

(p1==null)

if(p2==null)

//走到這裡說明都不為空,需要連線

//找到左鍊錶的最後乙個節點將其與右鍊錶連線

listnode cur = p1;

while

(cur.next!=null)

cur.next = p2;

return p1;

}

如果有錯誤還望指出!

牛客網 鍊錶分割

編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前。給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。設定兩個鍊錶,將小於x的結點放在乙個鍊錶中,大於等於x的結點放在另乙個鍊錶中,然後合併兩個鍊...

牛客網 程式設計題 鍊錶分割

現有一鍊錶的頭指標 listnode phead,給一定值x,編寫一段 將所有小於x的結點排在其餘結點之前,且不能改變原來的資料順序,返回重新排列後的鍊錶的頭指標。解這道題目,最重要的是建立兩個鍊錶,將小於x的結構體放到乙個鍊錶lesshead,大於x的結構體放到另乙個鍊錶greaterhead。最...

牛客 鍊錶分割

編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前 給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。new關鍵字之後會建立例項物件,其他的複製都只是引用,比如 new a 建立a的物件 b a...