1.描述:
给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。
你应该保留两部分内链表节点原有的相对顺序。
给定链表 1->4->3->2->5->2->null,并且 x=3
返回 1->2->2->4->3->5->null
新建两个链表,依次判断原链表与比较值的大小小的放左链表,大的放右链表,最后将左链表的尾节点指向右链表的头节点
3.代码:
if(head==NULL)return NULL;
ListNode *left=new ListNode(0);
ListNode *right=new ListNode(0);
ListNode *l=left;ListNode *r=right;
while(head!=NULL)
{
if(head->val<x)
{
l->next=head;
l=head;
}
else
{
r->next=head;
r=head;
}
head=head->next;
}
r->next=NULL;
l->next=right->next;
return left->next;
}
4.感想:这个题上课讲过,照着思路来就可以轻松过