链表题目---3 合并两个有序单链表 和 分割链表
合并两个有序单链表
/*** 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 合并两个有序单链表 和 分割链表相关推荐
- 合并两个有序单链表,使得合并后的链表仍然有序
在<剑指offer>里有一道笔试面试题:合并两个有序单链表,使得合并后的链表仍然有序.书中巧妙的利用了递归方法实现了该函数功能. 显然,利用递归算法能够让代码看起来非常简洁且容易看懂,但如 ...
- 链表问题19——合并两个有序的单链表
题目 给定两个有序单链表的头节点head1和head2,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头节点. 思路 本题较为简单,假设两个链表的长度分别为M和N,直接给出时间复杂度为O ...
- python创建一个有序链表_Python实现合并两个有序链表的方法示例
本文实例讲述了Python实现合并两个有序链表的方法.分享给大家供大家参考,具体如下: 思路:先选出第一个节点,然后遍历两个链表,把小的作为当前节点的下一个节点,一直到其中一个链表遍历完,这时候把另一 ...
- C++头插法尾插法建立单链表,合并两个有序单链表
A和B是两个单链表(带表头结点),其中元素递增有序.设计一个算法,将A和B归 并成一个按元素值非递减有序的链表 C,C由A 和B 中的结点组成. #include<iostream> #i ...
- 力扣题目——88. 合并两个有序数组
注:本文的实现思路主要是基于JS(JavaScript),涉及到的一些函数都是JS中的自带函数 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ...
- 合并两个有序的单链表
题目:给定两个有序单链表的头节点head1和head2,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头节点 class node:def __init__(self,value):se ...
- 合并两个有序的单链表-Java
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net package live.every.day.Pro ...
- LeetCode题组:第21题-合并两个有序链表
1.题目:合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出: ...
- 两个有序单链表的合并排序算法
设计两个有序单链表的合并排序算法 ListList MergeList(LiskList La, LinkList Lb){Lnode *pa = La->next;Lnode *pb = Lb ...
最新文章
- [C++] 牛客网:合并两个有序的数组
- UVa 11174 - Stand in a Line
- 成田机场坐access到品川_关西机场交通攻略
- 使用CGlib出现java.lang.NoClassDefFoundError: org/objectweb/asm/Type异常
- Hadoop分布式环境下的数据抽样
- 前端学习(2227):react之状态二
- CCF 201612-2 工资计算 java 解题
- 全网最全Python爬虫工具使用指南
- 面试官问你final、finally、finalize的区别
- 如何将多个图像上传到SQL Server
- 同事用Excel花了半小时做甘特图,我用一工具只用10分钟
- 定时器_STM32通用定时器
- 机器视觉实验二:道路车流量计数实验(OpenCV-python代码)
- 2022最新Java面试宝典(史上最全,BAT大厂面试必备,用心看完该篇就够了,建议先关注点赞加收藏)
- HaaS EDU K1设备资源总体介绍
- 了解CompletableFuture
- 中国国家地理高清晰的PDF书籍系列经典珍藏版
- Android Apk签名修改V1,V2,V3,V4
- 【矩阵论】矩阵的相似标准型(3)
- 你写论文时发现了哪些非常神的网站?