合并两个有序单链表

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){if(l1 == NULL){return l2;}else if(l2 == NULL){return l1;}struct ListNode *cur1 = l1;struct ListNode *cur2 = l2;struct ListNode *result =NULL;  //合并后的新链表struct ListNode *result_tail =NULL; //result 链表的最后一个结点while(cur1!=NULL&&cur2!=NULL){if(cur1->val <= cur2->val ){//把cur1的结点尾插到resultif(result_tail !=NULL){  //往最后一个结点插result_tail->next=cur1;result_tail=cur1;}else{result =cur1;result_tail=cur1;}cur1=cur1->next;       //往后移}else{//把cur2的结点尾插到resultif(result_tail !=NULL){result_tail->next=cur2;result_tail=cur2;}else{result =cur2;result_tail=cur2;}cur2=cur2->next;       //往后移}}//一个链表已经处理完了if(cur1 != NULL){result_tail->next=cur1;}else{result_tail->next=cur2;}return result;
}

分割链表

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {public:ListNode* partition(ListNode* pHead, int x) {ListNode *lt =NULL;     //  <x的第一个结点ListNode *lt_tail =NULL;    //<x 的最后一个结点ListNode *ge =NULL; // >=x的第一个结点ListNode *ge_tail = NULL; // >=x 的最后一个结点ListNode *cur =pHead;while(cur != NULL){ListNode *next =cur->next;cur->next = NULL;if(cur->val< x){if(lt_tail == NULL){lt = lt_tail =cur;}else{lt_tail->next = cur;lt_tail = cur;}}else{if(ge_tail == NULL){ge = ge_tail =cur;}else{ge_tail->next = cur;ge_tail = cur;}}cur = next;}if(lt_tail == NULL){return ge;}lt_tail->next = ge;return lt;}
};

链表题目---3 合并两个有序单链表 和 分割链表相关推荐

  1. 合并两个有序单链表,使得合并后的链表仍然有序

    在<剑指offer>里有一道笔试面试题:合并两个有序单链表,使得合并后的链表仍然有序.书中巧妙的利用了递归方法实现了该函数功能. 显然,利用递归算法能够让代码看起来非常简洁且容易看懂,但如 ...

  2. 链表问题19——合并两个有序的单链表

    题目 给定两个有序单链表的头节点head1和head2,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头节点. 思路 本题较为简单,假设两个链表的长度分别为M和N,直接给出时间复杂度为O ...

  3. python创建一个有序链表_Python实现合并两个有序链表的方法示例

    本文实例讲述了Python实现合并两个有序链表的方法.分享给大家供大家参考,具体如下: 思路:先选出第一个节点,然后遍历两个链表,把小的作为当前节点的下一个节点,一直到其中一个链表遍历完,这时候把另一 ...

  4. C++头插法尾插法建立单链表,合并两个有序单链表

    A和B是两个单链表(带表头结点),其中元素递增有序.设计一个算法,将A和B归 并成一个按元素值非递减有序的链表 C,C由A 和B 中的结点组成. #include<iostream> #i ...

  5. 力扣题目——88. 合并两个有序数组

    注:本文的实现思路主要是基于JS(JavaScript),涉及到的一些函数都是JS中的自带函数 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ...

  6. 合并两个有序的单链表

    题目:给定两个有序单链表的头节点head1和head2,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头节点 class node:def __init__(self,value):se ...

  7. 合并两个有序的单链表-Java

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net package live.every.day.Pro ...

  8. LeetCode题组:第21题-合并两个有序链表

    1.题目:合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出: ...

  9. 两个有序单链表的合并排序算法

    设计两个有序单链表的合并排序算法 ListList MergeList(LiskList La, LinkList Lb){Lnode *pa = La->next;Lnode *pb = Lb ...

最新文章

  1. [C++] 牛客网:合并两个有序的数组
  2. UVa 11174 - Stand in a Line
  3. 成田机场坐access到品川_关西机场交通攻略
  4. 使用CGlib出现java.lang.NoClassDefFoundError: org/objectweb/asm/Type异常
  5. Hadoop分布式环境下的数据抽样
  6. 前端学习(2227):react之状态二
  7. CCF 201612-2 工资计算 java 解题
  8. 全网最全Python爬虫工具使用指南
  9. 面试官问你final、finally、finalize的区别
  10. 如何将多个图像上传到SQL Server
  11. 同事用Excel花了半小时做甘特图,我用一工具只用10分钟
  12. 定时器_STM32通用定时器
  13. 机器视觉实验二:道路车流量计数实验(OpenCV-python代码)
  14. 2022最新Java面试宝典(史上最全,BAT大厂面试必备,用心看完该篇就够了,建议先关注点赞加收藏)
  15. HaaS EDU K1设备资源总体介绍
  16. 了解CompletableFuture
  17. 中国国家地理高清晰的PDF书籍系列经典珍藏版
  18. Android Apk签名修改V1,V2,V3,V4
  19. 【矩阵论】矩阵的相似标准型(3)
  20. 你写论文时发现了哪些非常神的网站?

热门文章

  1. CentOS Vi编辑器
  2. Linux Shell——函数的使用
  3. 《程序设计与数据结构》第3周学习总结
  4. 鸿蒙3部曲先看哪部,讨论雪鹰与鸿蒙三部曲的关系
  5. mysql重做日志_MySQL-重做日志 redo log -原理
  6. php识别地址,实现地址自动识别实例(PHP)
  7. ddr5内存上市时间_DDR5内存明年才能上市,SK Hynix已预研DDR6:12Gbps
  8. 力扣删除排序数组中的重复项 II
  9. 8086地址传送指令LEA,LDS,LES
  10. NewCode----数串