牛客網 CM11 鍊錶分割

2021-10-22 09:51:24 字數 798 閱讀 3008

現有一鍊錶的頭指標 listnode* phead,給一定值x,編寫一段**將所有小於x的結點排在其餘結點之前,且不能改變原來的資料順序,返回重新排列後的鍊錶的頭指標。

建立兩個鍊錶,分別儲存大於x和小於x的結點,然後將兩個結點連線在一起

注意:建立的兩個煉表頭結點是沒有意義的(不使用)

public class partition 

else

}

lasta.next = headb.next;

lastb.next = null;

//這一步必須有,下面解釋

return heada.next;

}}

1、建立兩個鍊錶,頭結點不使用,並且定義鍊錶的尾結點

2、遍歷原始鍊錶,將所有小於x的結點尾插到鍊錶a中,將所有大於x的結點尾插到鍊錶b中。

3、連線兩個鍊錶

將a鍊錶的尾結點與b煉表頭結點的下乙個結點連線,並將鍊錶b的尾結點指向空

將鍊錶b指向null這一步是必不可少的,因為鍊錶lastb是從原煉表中切割出的,後邊可能還有連線的結點,所以需要置空,不置空有可能會陷入死迴圈。

牛客網 鍊錶分割

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

牛客網練習 鍊錶分割

編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前 給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。一看到這道題我就想到了建立兩個鍊錶的想法,乙個鍊錶放小於指定x的所有節點,另乙個放大於等於的...

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

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