当前位置: 首页 > news >正文

数据结构:(牛客)CM11 链表分割

描述

现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/#include <cfloat>
class Partition {
public:ListNode* partition(ListNode* pHead, int x) {typedef struct ListNode ListNode;//创建两个非空的链表:小链表,大链表ListNode *lessHead, *lessTail;lessHead=lessTail=( ListNode*)malloc(sizeof(ListNode));ListNode*greaterHead,*greaterTail;greaterHead=greaterTail=(ListNode*)malloc(sizeof( ListNode));//遍历链表,找到小于x的值尾插到小链表的尾结点,反之ListNode*pcur=pHead;while(pcur){if(pcur->val<x){lessTail->next=pcur;lessTail=lessTail->next;}else{greaterTail->next=pcur;greaterTail=greaterTail->next;}pcur=pcur->next;}//大小链表合并greaterTail->next=NULL;lessTail->next=greaterHead->next;ListNode*ret=lessHead->next;free(lessHead);free(greaterHead);lessHead=greaterHead=NULL;return ret;}
};


http://www.mrgr.cn/news/23037.html

相关文章:

  • LeetCode刷题:找到第K大的元素
  • 基于人工智能的智能垃圾分类系统
  • 低代码平台:助力企业数字化转型的利器
  • 请解释Java中的线程局部变量的作用和使用场景。什么是Java中的Lock接口?它与synchronized关键字有何区别?
  • 【JUC】13-原子类
  • C++学习笔记----6、内存管理(五)---- 智能指针(1)
  • 学习threejs,创建立方体,并执行旋转动画
  • 本地服务器部署Text generation并添加code llama实现远程多人协作
  • 线程池的应用
  • 九月五日(k8s配置)
  • 外贸人提高潜在客户EDM电子邮件营销参与度的一些建议
  • 电池的电-热-寿命模型是什么?
  • 在debian11下的tightvncserver配置
  • 安全产品概述
  • oracle数据库报ORA-00060错误(死锁)的解决办法
  • AI人工智能如何重塑我们的世界,引领无限可能
  • 收藏:B站相当精彩的关于向量数据库的2个视频
  • 百望云 X 爱普生 :对接乐企实现税企直连,节省数十万元管理成本!
  • std::fixed
  • windows下载安装perl