【Leetcodeブラシ問題編】(十七)チェーンテーブルを区切る
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
ListNode* smallHead = new ListNode(-1);
ListNode* smallCur = smallHead;
ListNode* bigHead = new ListNode(-1);
ListNode* bigCur = bigHead;
ListNode* curNode = head;
while(curNode != NULL){
if(curNode->val < x){
smallCur ->next = new ListNode(curNode->val);
smallCur = smallCur->next;
}
else{
bigCur->next = new ListNode(curNode->val);
bigCur=bigCur->next;
}
curNode = curNode->next;
}
smallCur->next = bigHead->next;
return smallHead->next;
}
};
要点:1新規のヘッダノードは、ブートとしてのみ使用され、最後にドッキングする際に使用されますが、実際の値はありません.最後の戻り値は、新規のヘッダノードの次からです
2 ListNodeはすべてポインタ形式を採用しているので、演算子は->
3ノードを追加するには、new演算子を使用する必要があります:List Node*bigHead=new ListNode(-1);