php链表笔记:合并两个有序链表

时间:2022-06-11 00:45:42
<?php
/**
* Created by PhpStorm.
* User: huizhou
* Date: 2018/12/2
* Time: 15:29
*/ /**
* 合并两个有序链表
* 思路:简单的合并排序。由于链表本来就是递增的,所以每次将两个链表中较小的部分拿过来就可以了。
*/ class MergeNode{
private $next;
private $value; public function __construct($value = null)
{
$this->value = $value;
} public function getValue(){
return $this->value;
} public function setValue($value){
$this->value = $value;
} public function getNext(){
return $this->next;
} public function setNext($next){
$this->next = $next;
} } function test(){ // 创建两个有序的链表 $linkList=new MergeNode(); $linkList->setNext(null); $temp=$linkList; for($i=1;$i<=10;$i+=2){ $node=new MergeNode(); $node->setValue($i); $node->setNext(null); $temp->setNext($node); $temp=$node; } //第二个有序的链表
$list2=new MergeNode(); $temp=$list2; for($i=2;$i<=10;$i+=2){ $node=new MergeNode(); $node->setValue($i); $node->setNext(null); $temp->setNext($node); $temp=$node; } $result = Merge($linkList,$list2); while($result != null){
if($result->getValue()){
echo $result->getValue() .",";
}
$result = $result->getNext();
} } test(); /**
* 合并两个有序链表
* @param MergeNode $pHead1
* @param MergeNode $pHead2
* @return MergeNode
*/
function Merge(MergeNode $pHead1,MergeNode $pHead2){ if($pHead1 == null){
return $pHead2;
} if($pHead2 == null){
return $pHead1;
} if($pHead1->getValue() < $pHead2->getValue()){
$resultHead = $pHead1;
$pHead1 = $pHead1->getNext();
}else{
$resultHead = $pHead2;
$pHead2 = $pHead2->getNext();
} $pre = $resultHead;
while ($pHead1 && $pHead2){ if($pHead1->getValue() <= $pHead2->getValue()){
$pre->setNext($pHead1);
$pHead1 = $pHead1->getNext();
$pre = $pre->getNext();
}else{
$pre->setNext($pHead2);
$pHead2 = $pHead2->getNext();
$pre = $pre->getNext();
} } if($pHead1 != null){
$pre->setNext($pHead1);
} if($pHead2 !=null){
$pre->setNext($pHead2);
} return $resultHead; }

php链表笔记:合并两个有序链表的更多相关文章

  1. 【Leetcode链表】合并两个有序链表(21)

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

  2. 【LeetCode题解】21&lowbar;合并两个有序链表

    目录 21_合并两个有序链表 描述 解法一:迭代 思路 Java 实现 Python 实现 解法二:递归 思路 Java 实现 Python 实现 21_合并两个有序链表 描述 将两个有序链表合并为一 ...

  3. leetcode 21 Merge Two Sorted Lists 合并两个有序链表

    描述: 合并两个有序链表. 解决: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (!l1) return l2; if (!l2) ...

  4. Leecode刷题之旅-C语言&sol;python-21&period;合并两个有序链表

    /* * @lc app=leetcode.cn id=21 lang=c * * [21] 合并两个有序链表 * * https://leetcode-cn.com/problems/merge-t ...

  5. LeetCode初级算法--链表02:合并两个有序链表

    LeetCode初级算法--链表02:合并两个有序链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...

  6. &lt&semi;每日 1 OJ&gt&semi; -LeetCode 21&period; 合并两个有序链表

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

  7. 算法练习之合并两个有序链表&comma; 删除排序数组中的重复项&comma;移除元素&comma;实现strStr&lpar;&rpar;&comma;搜索插入位置&comma;无重复字符的最长子串

    最近在学习java,但是对于数据操作那部分还是不熟悉 因此决定找几个简单的算法写,用php和java分别实现 1.合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两 ...

  8. LeetCode 21&period; 合并两个有序链表&lpar;Merge Two Sorted Lists&rpar;

    21. 合并两个有序链表 21. Merge Two Sorted Lists 题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. LeetCode ...

  9. leecode刷题(23)-- 合并两个有序链表

    leecode刷题(23)-- 合并两个有序链表 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2-> ...

随机推荐

  1. poj 1695

    用动态规划,dp[a][b][c]表示从位置最大的车在a(注意不是第一辆车),第二的车在b,第三的车在c开始最少需要的时间. 方程:dp[a][b][c]=max{dp[a+1][b][c],     ...

  2. Mac删除&period;DS&lowbar;Store文件

    1.删除.DS_Store文件 sudo find ./ -name ".DS_Store" -depth -exec rm {} \; 2.禁止生成此文件 defaults wr ...

  3. &period;Net平台下,分布式文件存储的实现

    遇到的问题 对于Web程序,使用一台服务器的时候,客户端上传的文件一般也都是存储在这台服务器上.但在集群环境中就行不通了,如果每个服务器都存储自己接受到的文件,就乱套了,数据库中明明有这个附件的记录, ...

  4. Android中使用http协议访问网络

    HTTP协议的工作原理:客户端向服务器端发送http请求,服务器端收到请求后返回一下数据给客户端,客户端接受消息并进行解析. 在Android中发送http请求的方式有两种,第一种是通过HttpURL ...

  5. 在Windows 10 Anniversary下配置Caffe

    去年十月份的时候尝试过配置caffe,真的是恶心到家,当时用的还是微软魔改的基于NuGet的caffe.现在这个项目退役了,接手的是原项目下的windows分支,虽然并不是很成熟,但是依然非常推荐在W ...

  6. 黑马程序员:轻松精通Java学习路线连载1-基础篇!

    编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...

  7. 201521123084 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. answer: (1)netassist可以用来链接IP端口 (2)accept方法可以用来监听端口,当没 ...

  8. Local Binary Convolutional Neural Networks ---卷积深度网络移植到嵌入式设备上?

    前言:今天他给大家带来一篇发表在CVPR 2017上的文章. 原文:LBCNN 原文代码:https://github.com/juefeix/lbcnn.torch 本文主要内容:把局部二值与卷积神 ...

  9. Error updating database&period; Cause&colon; java&period;sql&period;BatchUpdateException&colon; Field &&num;39&semi;id&&num;39&semi; doesn&&num;39&semi;t have a default value

    异常信息 ### Error updating database. Cause: java.sql.BatchUpdateException: Field 'id' doesn't have a de ...

  10. js中boolean类型的理解

    <html> <head> <script type="text/javascript"> var x="12"; aler ...