您的位置:首页 > 其它

leetcode: Partition List

2013-05-02 23:58 369 查看
/**
* 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) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (head == NULL)
return NULL;

ListNode *pCur;
ListNode *pFront;
ListNode *pRear;

ListNode *pNewHead  = NULL;
ListNode *pRearHead = NULL;

pCur   = head;
pFront = NULL;
pRear  = NULL;

while (pCur != NULL)
{
if (pCur->val < x)
{
if (pFront == NULL)
{
pFront   = pCur;
pNewHead = pCur;
}
else
{
pFront->next = pCur;
pFront = pFront->next;
}

}
else
{
if (pRear == NULL)
{
pRear     = pCur;
pRearHead = pCur;
}
else
{
pRear->next = pCur;
pRear = pRear->next;
}
}
pCur = pCur->next;
}

if (pFront)
{
pFront->next = pRearHead;
if (pRear)
pRear->next = NULL;
}
else if (pRearHead)
{
pNewHead = pRearHead;
}

return pNewHead;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: