Partition List

来源:互联网 发布:java用户注册界面代码 编辑:程序博客网 时间:2024/06/07 16:18

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.

You should preserve the original relative order of the nodes in each of the two partitions.

For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.

<span style="font-size:18px;">typedef struct Node{int data;    struct Node *next;}Node,*LinkList;void PartitionList(LinkList *L,int x){     LinkList left=(LinkList)malloc(sizeof(Node));     LinkList right=(LinkList)malloc(sizeof(Node));     LinkList p=left;     LinkList q=right;     Node* curr=*L;     curr=curr->next;     while(curr)     {         if(curr->data<x)         {             p->next=curr;             p=curr;            //p->next=NULL;          }         else        {            q->next=curr;            q=curr;           //q->next=curr;q可能是最后一个指向NULL,如果再->next可能会出错         }        curr=curr->next;     }     p->next=right->next;      *L=left;}</span>


1 0