码迷,mamicode.com
首页 > 其他好文 > 详细

Partition List

时间:2015-03-16 17:55:05      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

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.

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

Partition List

标签:

原文地址:http://blog.csdn.net/u014082714/article/details/44308063

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!