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

LintCode 96. 链表划分

时间:2018-02-02 14:24:09      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:lintcode   用两个   部分   write   first   oid   拼接   gpo   相对   

给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。

你应该保留两部分内链表节点原有的相对顺序。

样例

给定链表 1->4->3->2->5->2->null,并且 x=3

返回 1->2->2->4->3->5->null

解:很简单,主要逻辑在while循环部分。

/**
 * Definition of ListNode
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *         this->val = val;
 *         this->next = NULL;
 *     }
 * }
 */


class Solution {
public:
    /*
     * @param head: The first node of linked list
     * @param x: An integer
     * @return: A ListNode
     */
    ListNode * partition(ListNode * head, int x) {
        // write your code here
    
    //用两个链表表示,分别存储小于x的节点和大于等于x的节点
      ListNode* smHead=NULL,*smTail=NULL,*bgHead=NULL,*bgTail=NULL;
     
      ListNode* cur=NULL;
      //逻辑主体
      while(head)
      {
          cur=head;
          head=head->next;    //注意head更新的位置,不能放在循环后面更新,因为insertNode()会改变cur->next
          if(cur->val<x)
          {
              insertNode(smHead,smTail,cur); //将node节点插入到小于x的链表的尾部
          }
          else
          {
              insertNode(bgHead,bgTail,cur); //将node节点插入到大于等于x的链表的尾部
          }
      }
      //判断返回的链表
      if(smHead==NULL)
      {
          return bgHead;
      }
      else if(bgHead==NULL)
      {
          return smHead;
      }
      else//拼接两链表
      {
          smTail->next=bgHead;
          return smHead;
      }
    }
    
    //将node节点插入到链表尾部
    void insertNode(ListNode* &head,ListNode* &tail,ListNode* node)
    {
        node->next=NULL;
        if(head==NULL)
        {
            head=node;
            tail=head;
            return;
        }
        tail->next=node;
        tail=tail->next;
    }
    
};

 

LintCode 96. 链表划分

标签:lintcode   用两个   部分   write   first   oid   拼接   gpo   相对   

原文地址:https://www.cnblogs.com/zslhg903/p/8404190.html

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