深入解析:C++:从0开始学习链表(练习)

news/2025/11/22 12:03:49/文章来源:https://www.cnblogs.com/gccbuaa/p/19256137

上一次我们学习了链表的基本概念和操作,今天我们来写几道链表的练习题,来巩固知识

1.力扣206反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

思路:

可以将链表的指针反转,使后一个指针指向前一个指针,但是要注意存储后一个指针的下一个指针的地址,否则会造成后面数据的丢失

class Solution {
public:ListNode* reverseList(ListNode* head) {//slow指针指向空,即头指针的前一个指针ListNode* slow = nullptr;//fast指针指向头指针ListNode* fast = head;while(fast){ListNode* fnxt = fast->next;fast->next = slow;slow = fast;fast = fnxt;}return slow;//此时slow指针指向反转完链表的头节点}
};

2.力扣24两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

输入:head = [1,2,3,4]
输出:[2,1,4,3]

思路:

        创建一个虚拟头节点,然后用上一题相似的方法,依次将每个节点的指针反转

class Solution {
public:ListNode* swapPairs(ListNode* head) {//创建虚拟头节点,并插入链表ListNode* vnode = new ListNode(0);vnode->next = head;head = vnode;//创建一个节点p存储虚拟头节点0ListNode* p = vnode;while(p->next&&p->next->next){ListNode* slow = p->next;//slow指向第一个元素1ListNode* fast = p->next->next;//fast指向第二个元素2ListNode* fnxt = fast->next;//fnxt指向第三个元素3//反转链表p->next = fast;//将0->2fast->next = slow;//2->1slow->next = fnxt;//1->3//此时链表为0->2->1->3->4->5->6p = slow;//更新p到需要处理的元素前一位,即3的前一位,也就是slow指向的位置}//将虚拟头结点删去head = vnode->next;//返回链表头节点return head;}
};

3.力扣19.删除链表的倒数第N个节点

给你一个链表,删除链表的倒数第 n个结点,并且返回链表的头结点。

示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

思路:

创建一个虚拟头节点,使用slow和fast两个指针指向虚拟头节点,将fast指针先移动n个元素,再将两个元素一起移动,直到fast指针到尾部时,slow指针刚好指向要删除元素的前一个元素

class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* vnode = new ListNode();//虚拟头节点vnode->next = head;//两个指针指向虚拟头节点ListNode* fast = vnode;ListNode* slow = vnode;//将快指针fast先移动n个元素for(int i = 0;i<=n;i++){if(fast == nullptr) return head;//如果移动过程中已经到尾节点,说明链表没有倒数第n个元素fast = fast->next;}//将两个指针一起移动while(fast){fast = fast->next;slow = slow->next;}//最后slow指针指向要删除元素的前一个元素slow->next = slow->next->next;return vnode->next;}
};

4.力扣876链表的中间节点

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。

示例 2:

输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

思路:

        由于要找中间节点,所以快指针的遍历速度是慢指针的两倍,这样当快指针遍历结束时,慢指针刚好指向中间节点

class Solution {
public:ListNode* middleNode(ListNode* head) {ListNode* fast = head;//快指针ListNode* slow = head;//慢指针//循环条件为://奇数:快指针指向的下一个元素为nullptr则慢指针到达中间节点//偶数:快指针指向的元素为nullptr,则慢指针指向第二个中间节点while(fast&&fast->next){fast = fast->next->next;//快指针两倍速度遍历slow = slow->next;}return slow;}
};

5.力扣160相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

图示两个链表在节点 c1 开始相交

题目数据 保证 整个链式结构中不存在环。

思路:

        创建两个指针分别指向两个链表的头节点,两个指针同时分别遍历两个链表,当一个指针遍历完其指向的链表时,将其重新指向另一个链表的头节点继续遍历.

        这样如果两个链表有相交,则两个指针会指向同一个元素,循环停止.如果没有相交,当两个指针都遍历完两个链表时,会同时指向两个尾节点nullptr,循环也会停止

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* pa = headA;//pa遍历headAListNode* pb = headB;//pb遍历headBwhile(pa!=pb){//循环条件为两个指针指向不相同if(pa==nullptr){//当pa遍历完headA时,继续遍历headBpa = headB;}else{//遍历链表pa = pa->next;}if(pb == nullptr){//当pb遍历完headB时,继续遍历headApb = headA;}else{//遍历链表pb = pb->next;}}//如果有相交,则pa会指向相交的节点//如果不相交,pa最终和pb一起指向nullptrreturn pa;}
};

        这是五题力扣上的关于链表操作的相对简单的算法题,大家可以通过这几题,再理解理解链表的指针域和值域的关系,以及每个链表节点之间的关系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/972998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年质量好的20吨地磅厂家最新权威推荐排行榜

2025年质量好的20吨地磅厂家最新权威推荐排行榜行业背景与市场趋势随着我国工业化和物流业的快速发展,地磅作为重要的称重设备,在各行各业的应用日益广泛。据中国衡器协会最新统计数据显示,2024年我国地磅市场规模已…

2025年诚信的沙发厂家推荐及选购指南

2025年诚信的沙发厂家推荐及选购指南行业背景与市场趋势随着中国家居消费市场的持续升级,沙发作为客厅核心家具,其市场规模在2024年已达到1860亿元人民币,预计2025年将突破2000亿元大关。据《中国家具行业发展报告》…

2025年燃气阀控制箱定制厂家权威推荐:落地式调压箱/燃气调压器箱/天然气调压箱源头供应商精选

在工业燃气应用领域,燃气阀控制箱作为确保供气安全与稳定的核心控制单元,其定制化水平直接关系到整个燃气系统的运行效率与可靠性。 随着工业能源结构的持续优化,燃气阀控制箱定制化需求日益凸显。作为燃气调压、计…

2025年诚信的高弹三明治网布热门厂家推荐榜单

2025年诚信的高弹三明治网布热门厂家推荐榜单行业背景与市场趋势随着全球运动休闲产业的蓬勃发展以及消费者对功能性面料需求的持续增长,高弹三明治网布作为重要的纺织材料,近年来市场规模呈现稳定上升态势。根据中国…

2025 BM6 12V Wireless Bluetooth Car Battery Monitor: iOS Android APP Health Check for Pros Owners

Introduction: The Hidden Battery Problem Every year, countless European and American drivers face the frustration of a dead car battery—stranding them in traffic, delaying work, or ruining plans. For …

2025年可靠的公园移动厕所厂家最新推荐权威榜

2025年可靠的公园移动厕所厂家最新推荐权威榜行业背景与市场趋势随着城市化进程加速和公共卫生意识提升,中国移动厕所市场规模呈现稳定增长态势。据《2024年中国公共卫生设施行业白皮书》显示,2023年我国移动厕所市场…

2025年耐用的不锈钢保温风机厂家最新实力排行

2025年耐用的不锈钢保温风机厂家最新实力排行行业背景与市场趋势随着工业4.0时代的深入发展,不锈钢保温风机作为工业生产中不可或缺的通风设备,其市场需求持续增长。据中国通用机械工业协会风机分会最新数据显示,20…

2025年商业刷鞋机优质厂家权威推荐:洗鞋刷鞋机/懒人洗鞋机/滚筒刷鞋机源头供应商精选

高效、智能的商业刷鞋机正成为洗护服务行业降本增效的关键设备,其性能表现直接关系到商户的运营成本与客户体验。 在共享经济与专业化服务蓬勃发展的今天,商业刷鞋机作为鞋履护理服务的核心设备,其技术与性能备受关…

2025年耐用的弯管加工厂家最新热销排行

2025年耐用的弯管加工厂家最新热销排行行业背景与市场趋势随着制造业的持续升级和基建投资的稳步增长,弯管加工行业迎来了新一轮发展机遇。据中国金属制品行业协会最新数据显示,2024年我国弯管加工市场规模已达到187…

2025年性价比高的全屋定制橱柜厂家推荐及选择指南

2025年性价比高的全屋定制橱柜厂家推荐及选择指南行业背景与市场趋势随着中国城镇化进程的加快和居民消费升级,全屋定制行业近年来呈现爆发式增长。据中国家具协会最新数据显示,2024年中国定制家具市场规模已突破500…

2025年正规的主轴中心出水旋转接头厂家最新TOP实力排行

2025年正规的主轴中心出水旋转接头厂家最新TOP实力排行行业背景与市场趋势旋转接头作为工业设备中的关键部件,在机械传动领域扮演着不可或缺的角色。随着中国制造业的持续升级和"智能制造2025"战略的深入推…

2025年铝合金重力浇铸机批发厂家权威推荐榜单:铝合金浇铸机/异型铝合金浇铸机厂家/轮毂铝合金浇铸机源头厂家精选

在制造业转型升级的推动下,铝合金重力浇铸机以其优异的成型质量和稳定的生产效率,正成为汽车零部件、水暖洁具等行业的首选设备。 随着全球制造业对轻量化、高强度零部件需求的持续增长,铝合金重力浇铸设备市场呈现…

2025年诚信的桶装方便面生产线厂家推荐及选购指南

2025年诚信的桶装方便面生产线厂家推荐及选购指南行业背景与市场趋势随着全球方便食品市场的持续扩张,桶装方便面生产线行业迎来了新的发展机遇。根据中国食品工业协会最新数据显示,2024年中国方便面市场规模已达到1…

2025年热门的工业铝溶胶最新TOP品牌厂家排行

2025年热门的工业铝溶胶最新TOP品牌厂家排行行业背景与市场趋势工业铝溶胶作为一种重要的纳米氧化物材料,近年来在新能源、电子元器件、催化剂、涂料等领域的应用持续扩大。根据《2024-2029年中国纳米材料行业市场调研…

2025年可靠的芝士年糕机厂家推荐及选购指南

2025年可靠的芝士年糕机厂家推荐及选购指南行业背景与市场趋势近年来,随着韩式料理在全球范围内的流行,芝士年糕作为一款兼具传统与创新的美食,市场需求持续增长。根据《2024年亚洲食品机械行业白皮书》数据显示,全…

OOP-实验3

实验任务1 源代码 button.hpp,window.hpp,task1.cpp点击查看代码 button.hpp #pragma once#include <iostream> #include <string>class Button { public:Button(const std::string &label_);const st…

2025年优秀的火山岩滤料行业内知名厂家排行榜

2025年优秀的火山岩滤料行业内知名厂家排行榜行业背景与市场趋势火山岩滤料作为一种高效环保过滤材料,近年来在水处理、人工湿地建设和工业过滤等领域应用日益广泛。根据中国环保产业协会2024年发布的《中国水处理材料…

2025年知名的热镀锌钢零售品牌竞争力口碑排行榜

2025年知名的热镀锌钢零售品牌竞争力口碑排行榜 行业背景与市场趋势 热镀锌钢因其优异的耐腐蚀性、高强度及长寿命,广泛应用于建筑、交通、机械制造、家居等领域。随着国内基建投资的持续增长以及绿色建筑材料的推广…

NCHU_单部电梯调度程序的题后分析与总结

1.前言: 这三次题目集围绕电梯调度系统的设计与实现,清晰地展现了面向对象编程思想和软件设计原则的迭代深化过程。题目集5(第一次)的核心任务是实现一个基础的单类电梯系统。它主要考察了面向对象编程的基础概念,…

2025年换热器盘管批发厂家权威推荐:U型弯管/筒体半圆管/不锈钢盘管源头供应商精选

面对市场众多选择,这份基于客观数据与行业调研的榜单有望为您的采购决策提供有力参考。 在工业生产与商业供热、制冷领域中,换热器盘管作为关键设备,其性能优劣直接影响到整个系统的能效与运行成本。据QYResearch最…