• 算法基础~链表~链表划分


    算法基础~链表~链表划分

    1,题意要求:小于x的放在前,大于等于x放后。
    2,例如x = 3,原链表图解:

    3,如果只在原链表上找出小x的组成“小”链,剩下的就是“大”链,但是,找出小链,不拼接的话,链表是断链状态的,

    so,需要找小 组成小链的同时,也需要找大 组成大链,即:

     4,一般,循环遍历,咱是一个结点一个结点的遍历,组建拼接,一般遍历结束,头指针的位置都到了链尾的位置,即:

     5,于是乎,咱就面临“小链、大链连接成一条链”的困境~~~

    ~解决:巧用空的头结点~用来标志第一个结点:

     7,直接上代码,分析如上:

    public class Solution {
      public:
        ListNode* partititon(ListNode* head, int x){
          ListNode less_head_node(0);
          ListNode more_head_node(0);
          ListNode* less_head = &less_head_node;
          ListNode* more_head = &more_head_node;
          while(head){
              if(head->val < x){    //构建小链
                 less_head->next = head;
                 less_head = head;
              }else{        //构建大链
                  more_head->next = head;
                  more_head = head;
              }
              head = head->next;
          }
          //小链的尾部连接大链头部
          less_head->next = more_head_node.next;
          more_head->next = NULL;
          return less_head_node.next;
        }
    }

    8,补充小知识点【.  与 -> 区别】

    . 是结构体变量,引用结构体成员
    ->  是结构体指针变量,引用结构体成员

  • 相关阅读:
    C# 观察者模式(Observer)
    CXGRID设置Selstart和SelLength
    Delphi 中相对路径与绝对路径、系统环境变量等相关函数说明
    用Delphi创建一个空的Access数据库
    非COM环境下的接口编程
    VCLZIP样例
    delphi 文件CRC32校验
    delphi中无类型文件读写
    Delphi调用MSSQL存储过程返回的多个数据集
    CXGRID,定位并高亮
  • 原文地址:https://www.cnblogs.com/shan333/p/15037717.html
Copyright © 2020-2023  润新知