2.2.3划分链表
原创
©著作权归作者所有:来自51CTO博客作者喜欢打篮球的普通人的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
1.题目
- Partition List 划分链表
- 思路:将所有小于给定值的节点取出组成一个新的链表,此时原链表中剩余的节点的值都大于或等于给定值,只要将原链表直接接在新链表后即可
此种解法链表变化顺序为:
Original: 1 -> 4 -> 3 -> 2 -> 5 -> 2
New:
Original: 4 -> 3 -> 2 -> 5 -> 2
New: 1
Original: 4 -> 3 -> 5 -> 2
New: 1 -> 2
Original: 4 -> 3 -> 5
New: 1 -> 2 -> 2
Original:
New: 1 -> 2 -> 2 -> 4 -> 3 -> 5
2.代码
class Solution
{
public:
ListNode *partition(ListNode* head, int x)
{
ListNode* dumenode=new ListNode(-1);
ListNode* minnode=new ListNode(-1);
dumenode->next=head;
ListNode* cur=dumenode;
while(cur->next)
{
if (cur->next->val<x)
{
minnode->next=cur->next;
minnode=minnode->next;
minnode->next=NULL;
cur->next=cur->next->next;
}
else
{
cur=cur->next;
}
}
minnode->next=dumenode->next
return dumenode->next;
}
};