首页 > 其他 > 详细

Partition List

时间:2015-03-16 17:52:27      阅读:259      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!