文章目录

  • ​​1.题目​​
  • ​​2.代码​​

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;
}
};