求链表的中间结点

快慢指针——求有序链表的中位数 快慢指针的应用: 1. 快乐数 LeetCode 202 2. 环形链表 LeetCode 141 3. 有序链表的中位数(未找到原题,故自己编写了测试用例↓) 4. 找出链表倒数第k个节点剑指Offer 参考:https://www.e-learn.cn/content/qita/2102473 【快慢指针方法:求一个有序链表的中位数】算法实现&a... 阅读详情

求链表的中间结点,如果链表长度为奇数,则返回中间结点,如果链表长度为偶数,则返回中间两个结点的任意一个。

(1)定义两个指针,同时从头结点出发。

(2)指针p1一次走2步,指针p2一次走1步。

(3)当p1走到链表末尾的时候,p2正好在链表中间。

 

struct node
{
	int value;
	node* next;
};

/* 链表尾加入新元素*/
node* addNode(node*head ,int addValue)
{
	 node* newNode=new node();
	 newNode->next=NULL;
	 newNode->value=addValue;
	 node* p=new node();
	 p=head; //list的头结点
	 if(head==NULL)
	 {
	   head=newNode; //新节点为链表头节点
	 }else
	 {
		while(p->next!=NULL)//找到尾节点
			p=p->next;
		p->next=newNode; //在尾节点后面加入新节点
	 }
	 return head;
}

/*找出链表中间结点*/
node* findMiddleNode(node* head)
{
	node* pNode1=head;
	node* pNode2=head;
	if(head==NULL)return NULL ;//链表为空
	if(head->next==NULL||head->next->next==NULL) return head;//链表只有一个或者两个结点
 	while(pNode1->next!=NULL&&pNode1->next->next!=NULL)//链表长度是奇数的时候,临界条件p->next==null;
	{
		pNode1=pNode1->next->next;//每次走2个结点
		pNode2=pNode2->next;//每次走1个结点
	}
	return pNode2;
}



【leetcode 和 c++】 合并两个有序链表, 以及其升级题型合并K个有序链表(和数组并找中位数) 24.03.01 listnode 要挂 #include 头文件while循环,保证两个输入链表的不为空进入对其中一种为空的情况做处理(都为空,返回新建链表也没问题,所以不用处理)返回的时候要记得跳过虚拟头节点。NULL最好都改成nullptr这里 p2前面一定要有 星号,否则它就不是指针了1、用lists.empty() 的返回值就可以判断lists=[] 和 lists= [[]] ,这两种情况了(是的,我最开始用的是sizeof判断非零,甚至还单独写了一个函数判断空,苦笑)2、 阅读详情

相关推荐

链表5个常见操作:单链表反转、链表中环的检测、两个有序单链表的合并、删除链表中的倒数第n个结点、求链表的中间结点

链表5个常见操作: 初学链表手写链表代码时很容易出现各种各样的错误,这还导致需要写代码时有了很大的心理障碍,但是在自己把这几个常见的链表操作写熟练后对链表中终于不再望而生畏了,记录一下。 单链表反转 链表中环的检测 两个有序链表合并 删除链表倒数第n个结点 求链表的中间结点 链表实现: public class Node { int data; Node next; Node(int data){ this.data = data; } } 单链表反转: 单链表反转有迭代反转法、递归

bibibibiboi的博客 438

leetcode 04:寻找两个有序数组的中位数

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例 2: nums1 = [1, 2] nums2 = [3, 4] 则中位数是 (2 + ...

weixin_42479155的博客 340

只遍历链表一次求链表中间结点

ListNode* MidNode( ListNode* pHead ) { if ( NULL == pHead ) return NULL; else if ( NULL == pHead->m_pNext ) return pHead; else if ( NULL == pHead->m_pNext->m_pNext ) return pHead; ListNode*

ssopp24的博客 1019

【leetcode】链表的中间节点

快慢指针、暴力解法

weixin_44627672的博客 270

【链表】快慢双指针——python解决 链表中环的检测,求单链表的中间结点

在解决链表的很多问题时,设置快慢指针是一个很好的解决思路。 这次解决两个问题: 链表中是否有环结构 求单链表的中间节点 快慢指针的另一个问题 删除链表倒数第n个结点 ,请点击查看。 链表中环的检测 class Node(): def __init__(self, data, next=None): self.data = data self.next =...

scxyz的博客 1164

单链表的创建,逆转,寻找中位数,倒数第m个节点

c++实现单链表的创建,逆转,以及找到寻找中间节点,用最小的空间找到倒数第m个节点

python 数据结构之链表及常见面试题(找链表的中间节点、是否带环

线性表和链表的区别? 线性表包括顺序表和链表, 顺序表:优点 基于数组进行遍历和寻址的时候特别快,访问速度快,搜索能力强 缺点:往顺序表插入或删除一个元素,当前位置的后面元素都要向后移动一位 链表:是无序的, 和顺序表是互相补充的 链表组成:节点 单链表:一个个元素,分成2部分,1个数据域,1个指针域指向下一个节点,最后一个节点指向None值 循环链表: 最后一个节点指向 头节点 题目: 1、查找...

YangYangRun的博客 1091

科研党必备!用Requests+BeautifulSoup升级版Nature爬虫(含PDF下载功能)

本文介绍了一套基于Python Requests和BeautifulSoup的Nature期刊智能爬虫系统,专为科研人员设计,可自动抓取论文标题、摘要及开放获取的PDF文档。系统采用模块化设计,包含请求管理、PDF检测和邮件通知等功能,确保高效合规地获取学术资源,提升科研效率。

weixin_29041767的博客 256

经典面试题—反转链表、求链表中间结点、回文链表、重排链表

经典面试题—反转链表、求链表中间结点、回文链表、重排链表

CltCj的博客 991

WRF实战:自定义Vtable解析ECMWF海温数据的关键步骤与技巧

本文详细介绍了在WRF模型中自定义Vtable以解析ECMWF海温数据的关键步骤与技巧。通过解剖GRIB文件、编写自定义Vtable条目以及配置METGRID.TBL,解决了ECMWF数据与WRF模型对接的难题,为海洋气象和台风模拟研究提供了高精度数据输入方案。

weixin_29279101的博客 336

华为eNSP实战:手把手教你配置DHCP全局地址池(含AP固定IP分配)

本文通过华为eNSP模拟器,详细演示了如何配置DHCP全局地址池,为不同业务VLAN动态分配IP地址,并重点讲解了如何通过MAC地址绑定为接入点(AP)分配固定IP。文章涵盖了从拓扑设计、基础网络搭建到地址池精细配置、验证测试及常见故障排查的全流程,是网络工程师掌握企业级DHCP部署与AP管理的实用指南。

weixin_29235923的博客 600

10-求链表的中间结点

求链表的中间结点1.题目 1.题目 LeetCode题目链接

其木王·王子的博客 336

考试遇到 Assistant API 考点时,该掌握哪些要点?

【摘要】聚焦阿里云大模型 ACP 认证中智能体 Assistant API 考点,我结合自学认证成功经验,分享复习攻略。先解析 assistants、threads 等五个核心组件作用与关系,点明各组件支持及不支持的方法,最后给出计算 Python 代码调用大模型次数的思路,助力考生攻克考点、顺利拿证 。

davidkorhenn的博客 495

实现求链表的中间结点

实现求链表的中间结点 class ListNode: def __init__(self, x): self.val = x self.next = None import math class Solution: def middleNode(self, head): # 首先要知道链表一共有多少个结点 ...

u013109501的博客 364

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码)

vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu

🏆 前端领域优质创作者 6003

Python 爬虫实战:雪球用户数据爬取与投资行为分析(含 API 签名算法解析)

雪球作为国内领先的投资者社区,拥有丰富的用户数据和投资信息。通过爬取雪球用户数据并进行分析,我们可以深入了解用户的持仓偏好、交易行为和投资策略,为企业和投资者提供有价值的市场洞察。

yansideyucsdn的博客 2246

(三)求链表中间结点

目录 一、思路 二、代码 三、测试 四、总结 一、思路 先上关键代码 LinkList front_Node = L->next; LinkList later_Node = L->next; while(front_Node->next != NULL) { if(front_Node->next->next !=NULL) front_Node = front_Node->next->next; el.

蓝天的博客 725

Android12 适配 usb 触屏

在 Android 系统中,输入设备 IDC(Input Device Configuration)设备描述文件(.idc)是用于配置和定义输入设备行为和属性的文本文件。 该文件通常在`/system/usr/idc/` 或 `/vendor/usr/idc/`,具体位置因芯片厂商SDK而异。一般情况此类文件是预置到系统,开发者 root 权限才能修改这些文件。输入设备 IDC 设备描述文件在 Android 系统中起到了识别、配置、映射和定制输入设备的作用,使得系统能够准确解析和处理各种输入设备的事件,提

weixin_35723192的博客 1234

求链表中间结点

题目:求链表的中间结点。如果链表中结点总数为奇数,返回中间结点;如果结点总数是偶数,返回中间两个结点的任意一个。 解析:我们可以定义两个指针,同时从链表的头结点出发,第一指针一次走一步,第二个指针一次走两步,当第二个指针走到链表的末尾时,第一指针正好在链表的中间。以下代码是:如果结点的总数为偶数,我们返回中间结点的后一个结点。//找到链表中间结点 ListNode * findMidVa

yang20141109的专栏 534

RK3568平台(camera篇)点亮imx586摄像头

mipi摄像头硬件确认点:1.供电:5V,2.8V,1.2V,1.8V,reset脚(硬拉3.3,上电的时候从低到高),pwron脚外接3.3V。2,时钟:MCLKOUT是24兆时钟。3.4组差分mipi线。mipi的data线的波形为方波。

weixin_49303682的博客 7258

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: c++ 链表操作:添加、遍历、删除、查找
下一篇: 反转链表
yes1cpp
博客等级 码龄14年 15粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值