分割链表@Nowcoder —— 单链表

简介: 分割链表

@TOC

1. 题目

题目链接:分割链表
在这里插入图片描述

2. 思路及小注意点

这道题目的经典思路,就是创建两个新链表lessHeadmoreHead,各自尾插再链接即可。
在这里插入图片描述

小注意点

  • [ ] 这道题目的经典错误,就是greaterHead这条链表经历了一系列尾插之后,尾巴没置空。由于还可能与原链表中其后节点相连,实际上成环了。这点我注意到了。

在这里插入图片描述

  • [ ] 但也拦不了我这个智障晕的乎的把lessTailgreaterTail给成pHead

3. 题解

class Partition {
public:
    ListNode* partition(ListNode* pHead, int x) {
        // write code here
        if(pHead == NULL)
            return NULL;
        struct ListNode* lessHead,*lessTail;
        lessHead = lessTail = (ListNode*)malloc(sizeof(ListNode));
        
        struct ListNode* greaterHead,*greaterTail;
        greaterHead = greaterTail = (ListNode*)malloc(sizeof(ListNode));
       
        struct ListNode* cur = pHead;
        while(cur)
        {
            if(cur->val < x)
            {
                lessTail->next = cur;
                lessTail = cur;
            }
            else
            {
                greaterTail->next = cur;
                greaterTail = cur;
            }
            cur = cur->next;
        }
        lessTail->next = greaterHead->next;
        greaterTail->next = NULL;
        struct ListNode* ret = lessHead->next;
        free(lessHead);
        free(greaterHead);
        return ret;
    }
};

4. 反思

最朴素的思路无非是,为了保证数据顺序不变,创建一个新头结点,遍历链表把小的尾插(要找尾),同时不断缝合原链表(要记录prevnext),并且要找的到原链表的头,最后链接过来,一顿操作猛如虎,发现我是二百五。这种做法相当麻烦,最后还是回归了经典解法,创建两条新链表。

:star: After all this time?
:black_heart: Always.

持续更新~@边通书

相关文章
|
1月前
【数据结构】环形、相交、回文、分割、合并、反转链表
【数据结构】环形、相交、回文、分割、合并、反转链表
28 0
|
2月前
|
存储 算法 C语言
C语言手撕实战代码_循环单链表和循环双链表
本文档详细介绍了用C语言实现循环单链表和循环双链表的相关算法。包括循环单链表的建立、逆转、左移、拆分及合并等操作;以及双链表的建立、遍历、排序和循环双链表的重组。通过具体示例和代码片段,展示了每种算法的实现思路与步骤,帮助读者深入理解并掌握这些数据结构的基本操作方法。
|
4月前
【数据结构OJ题】链表分割
牛客题目——链表分割
32 0
【数据结构OJ题】链表分割
|
5月前
|
存储
链表入门(单链表讲)
链表入门(单链表讲)
链表入门(单链表讲)
|
4月前
链表4(法二)------7-4 sdut-C语言实验-单链表中重复元素的删除
链表4(法二)------7-4 sdut-C语言实验-单链表中重复元素的删除
32 0
|
6月前
|
存储 编译器
单链表与双链表实现
单链表与双链表实现
|
5月前
|
存储
【海贼王的数据航海】链表—单链表
【海贼王的数据航海】链表—单链表
34 0
|
6月前
特殊链表(循环单链表,循环双链表,静态链表)
特殊链表(循环单链表,循环双链表,静态链表)
53 3
|
5月前
|
算法
数据结构和算法学习记录——线性表之单链表(下)-头插函数、尾删函数、头删函数、查找函数、pos位置插入&删除数据、单链表销毁
数据结构和算法学习记录——线性表之单链表(下)-头插函数、尾删函数、头删函数、查找函数、pos位置插入&删除数据、单链表销毁
62 0
|
5月前
|
存储 算法
数据结构和算法学习记录——线性表之单链表(上)-初始单链表及其尾插函数(顺序表缺陷、单链表优点、链表打印)
数据结构和算法学习记录——线性表之单链表(上)-初始单链表及其尾插函数(顺序表缺陷、单链表优点、链表打印)
39 0