15. (附加)链表中间节点(C++版本)
使用的链表相关定义及函数在:链表最小结构(C++版本)
实现原理:
使用两个指针pFrontNode、pBackNode,它们都指向头节点。
每次让pFrontNode向前走2步,pBackNode向前走1步。
直到pFrontNode走到最后一个节点停止,pBackNode所指的即为中间节点。
实现代码:
ListNode* GetMiddleNodeFromTail(const MyList& myList)
{if (nullptr == myList.pHead) return nullptr;ListNode* pFrontNode = myList.pHead;ListNode* pBackNode = myList.pHead;while (pFrontNode->pNext != nullptr){if (pFrontNode->pNext != nullptr) pFrontNode = pFrontNode->pNext;if (pFrontNode->pNext != nullptr) pFrontNode = pFrontNode->pNext;pBackNode = pBackNode->pNext;}return pBackNode;
}
15. (附加)链表中间节点(C++版本)相关推荐
- 剑指offer面试题15:链表中倒数第K个节点
题目:输入一个链表,输出该链表的倒数第K个节点.为了符合大多数人的习惯,本题从1开始计数,即链表尾节点是倒数第一个节点. 解题思路: 解法一:一般情况下,单向链表无法从后一个节点获取到它前面的节点,可 ...
- 牛客网在线编程专题《剑指offer-面试题15》链表中倒数第k个节点
题目链接: https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&tqId=11167& ...
- 剑指offer:面试题18. 删除链表的节点
题目:删除链表的节点 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], ...
- 【Java】LeetCode 876 获取链表中间节点
题目:给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 解题思路 : 获取链表中间节点,算法思想是利用快慢指针 : 1.如上图分析,奇数节点链 ...
- 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体
准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...
- Leetcode 24.两两交换链表的节点 (每日一题 20210624)
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表.你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换.示例 1:输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 ...
- LeetCode-剑指 Offer 18. 删除链表的节点
剑指 Offer 18. 删除链表的节点 思路:用一个头节点,以及pre,cur双指针 /*** Definition for singly-linked list.* struct ListNode ...
- 双向链表删除节点时间复杂度_删除链表的节点(剑指offer第十七题)
删除链表的节点 题目:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点.返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], ...
- 删除链表重复节点 python_java删除链表中重复的节点(保留一个节点)
两种方法实现: package cn.exercise.list; import java.util.HashMap; /** * 删除链表重复节点(重复节点只保留一个) */ public clas ...
- 如何删除链表的最后一个节点_面试:删除链表的节点
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点.返回删除后的链表的头节点.注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5 输出: [4 ...
最新文章
- android锁屏流程_Android开机锁屏流程分析
- CSS背景属性彻底研究
- PHP修改PHP.ini上传大文件的解决办法
- 【转】android makefile文件分析
- VLAN 路由实验图解
- HTML (3)---HTML编辑器
- python treeview显示多列_Python tkinter treeview列大小
- 学堂在线计算机通信网络,第二章 数据通信的基础知识 计算机网络笔记 学堂在线 2.4差错控制...
- 【单片机】按键消抖及原理(硬件和软件方法详解)
- 用R包TCGA-Assembler下载TCGA数据
- 数据库导出换行mysql_数据库导出excel 换行
- C# TCP/IP通讯协议的整理(二)附带——与欧姆龙PLC通讯
- SLAM notes
- AppleTalk--网络大典
- 驾驭云端之风1——Spring Cloud微服务架构实践指南
- ZCMU-1919 kirito's 星爆气流斩(多重背包+二进制优化)
- 如何关闭 window10 自带的杀毒软件
- python实现excel表格按内容模块倒序排列
- 从源头解决问题,而不是曲线救国
- 感动:我奋斗了18年才和你坐在一起喝咖啡(转)
热门文章
- 程序员玩连连看的正确姿势
- 关于mysql数据库行级锁的使用(一)
- [转]MTK android 下载及启动过程
- 如何应对团购鼻祖Groupon的“***”
- 2.微服务设计 --- 演化式架构师
- 9.运输层(3)---TCP
- 5.网络层(3)---路由选择协议
- SQLMap使用总结
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
- Linux dirname、basename 指令