链表逆置

C语言—链表的逆置 C语言—链表的逆置 组里考核题有这么一道题:创建一个链表,链表里的数据取随机数,现在要求把链表逆置,写出实现代码。 刚看到这道题的时候我第一想到的是交换指针实现,但是画了半天想不出来,为了过审核就用了最笨的值交换。就是把头和尾的值交换,头向后移,尾向前移,直到相遇。 后来组长除了这个值交换还说了两种方法:迭代逆置链表和递归逆置链表。 迭代逆置链表:从第一个节点开始依次改变节点指针,把原来... 阅读详情

题目:给出一个链表和一个数k,比如链表1→2→3→4→5→6,逆置后6→5→4→3→2→1


分析:

因为单链表只能找到next节点,不能找到prev节点,所以必须借助辅助指针来保存原来链表的状态。


我们可以把过程分成下面几步:

1)pNext 保存 pHead->next 2)pHead->next 指向 pPre 3)pPre 指向 pHead保存原来的上一个节点  4)pHead指向pNext继续遍历链表

重复这几步直到pHead指向NULL:


Node* ReverseList(Node* pHead){
	Node* pPre = NULL;
	/*pHead遍历链表*/
	while (pHead != NULL){	
		Node* pNext = pHead->_pNext;/*保存修改前的next节点*/
		pHead->_pNext = pPre;
		pPre = pHead;/*保存修改前的prev节点*/
		pHead = pNext;
	}
	/*此时pHead为空,pPre指向原来的最后一个节点,就是新的头结点*/
	return pPre;
}


Cesium实战:如何在前端直接渲染TIFF影像(附完整代码与避坑指南) 本文详细介绍了如何在前端利用Cesium直接加载和渲染TIFF影像的完整技术方案。针对TIFF格式的地理影像数据,文章提供了从文件解析、坐标转换到像素处理与Cesium集成的全流程代码实现,并分享了性能优化与常见问题的避坑指南,帮助开发者高效实现三维地理可视化。 阅读详情

相关推荐

金蝶云星空v8.0私有化部署与cpolar内网穿透:构建企业级远程ERP访问通道

本文详细介绍了金蝶云星空v8.0企业版的私有化部署流程与cpolar内网穿透技术,帮助企业构建安全高效的远程ERP访问通道。从系统环境准备、SQL Server配置到内网穿透安全加固,提供全流程实战指导,助力企业实现本地部署与远程办公的无缝衔接。

weixin_28736335的博客 376

单链表反转(逆置)——(四种方法实现)

链表逆置就是把最后以一个提到坐前面,倒数第二个放到第二个……直到第一个到最后一个。 由于链表没有下标,所以不能借助下表来实行数据的逆置,要靠空间的转移来完成链表的逆置 这里采用没有头节点的链表来实现逆置。 第一种——头插法 算法思想:逆置链表初始为空,表中节点从原链表中依次“删除”,再逐个插入逆置链表的表头(即“头插”到逆置链表中),使它成为逆置链表的“新”的第一个结点,如此循环,直至原链表为空。 #include <stdio.h> #include <stdli...

m0_58397166的博客 8万+

Ansys Zemax与Speos协同设计:HUD系统从光学优化到驾驶模拟的全流程解析

本文详细解析了如何利用Ansys Zemax与Speos这对“黄金搭档”进行HUD系统的协同设计。流程始于Zemax进行核心光学架构与像差优化,奠定性能基础;随后将设计无缝导入Speos,通过HUD光学分析模块进行量化验证;最终在虚拟驾驶环境中进行沉浸式模拟,评估实际视觉体验与系统集成效果,实现从光学优化到驾驶模拟的全流程闭环。

weixin_29201933的博客 273

单链表的逆置方法

前言 单链表的逆置方法有很多种,此文简要说明以下两种方法 1.头插法 2.就地逆置法 3.递归 1.头插法 主要思路:遍历的过程中,将遍历的每一个元素依次插入到表头header之后 代码如下: void ReverseList(LinkList& head) { LinkList p,q; p = head->next; head->next = NULL; while (p) { q = p; p = p->next; q->next = hea

Vagrant_pursue的博客 2万+

Ubuntu20.04下Pycharm的快速安装与配置指南

本文提供了一份详细的Ubuntu 20.04系统下PyCharm社区版的安装与配置指南。文章重点介绍了通过手动下载.tar.gz压缩包进行安装的灵活方法,并涵盖了系统准备、依赖安装、首次运行、创建快捷方式以及解释器配置等关键步骤,帮助Python开发者快速搭建高效、可控的本地开发环境。

weixin_28831341的博客 379

Win10管理员权限的‘暗门’:从mmc.exe被阻止,聊聊UAC与自动提权那些事儿

本文深入解析Windows 10中UAC(用户账户控制)与自动提权机制,探讨mmc.exe被阻止的深层原因及解决方案。从UAC工作原理到自动提权机制,再到具体诊断与修复步骤,帮助用户理解并解决权限管理问题,同时平衡安全性与便利性。

weixin_30521161的博客 419

链表基础3——单链表的逆置(c语言实现)

递归法的好处是代码简洁,但递归深度较大时可能会导致栈溢出。

2301_80224556的博客 6968

Open3D (C++) KD tree的使用【2025最新版】

Open3D (C++) KD tree的使用,博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 1566

单链表的逆置(c语言)

单链表

没技术的博客 3161

无源元器件-电容选型参数总结

电容选型时,需要考虑的参数多种多样,这些参数的选择会直接影响到电路的性能、稳定性、成本等多个方面。本文对电阻电容磁珠电感的参数进行详细介绍并总结。

fydar的博客 835

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

平台:基本常用平台包括安卓,苹果(max和IOS),Windows64,Linux都行。10. 注意,如果从移动设备浏览器连接服务,信令服务器的SSL证书一定要先设好。想要在Unity中实现实时远程桌面,找到了Render Streaming这个手段,本篇介绍相应的使用方法和实例。8. 打开电脑浏览器,地址栏输入http://127.0.0.1,点击Receiver Sample。新建Unity项目,模板选Third Person,Project Name随意。启动App,控制台出现如下信息表示成功。

每日出拳老爷子的博客 2518

C语言:逆置单链表

1.逆置单链表 头插法,定义两个指针 ListNode* Reverse(ListNode* p)//不带头结点的链表逆置 { if (p == nullptr || p->next == nullptr)//判断是否只有一个节点,若只有一个节点,则不逆置 { return p; } ListNode* head = (ListNode*)malloc(sizeof(ListNode)); head->next = nullptr; while (p != nullptr)

小柒的秃头之路 3398

15 君正IPC库开发总结

在前面的章节中,我们介绍了君正ISP、视频采集、音频采集、音频播放、云台电机、移动侦测算法、人形侦测算法、移动跟踪算法等的封装。那么,应用层如何使用这些封装好的接口呢?根据设计模式中的依赖倒置原则:高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象。因此,应用层应当只能感知到我们封装的接口类,而不应当感知到其对应的具体实现类。

hope_wisdom的技术博客 1662

链表逆置的两种方法

头插法逆置和三指针原地反转

lxylxylxy的博客 9044

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

链表逆置的两种方法——头插法和就地逆置

初学数据结构,链表的操作除了增、删、改、查功能外,链表还有一项比较重要的操作——链表的逆置。于是对其进行了一番简单的研究。 首先,我们来创建一个链表(含头结点) #include<stdio.h> ...

weixin_43204126的博客 3588

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

栈的链表逆置

通过题目我们知道这个题需要使用链表方面的知识,首先对链表不熟悉的小伙伴们可以先去复习一下链表,了解一下单链表的各种基础操作。要实现链表的逆置,我第一时间想到的就是栈,因为栈的特点就是先入后出,想到就去实现。 typedef struct lnode{ int data; //定义单链表 lnode *next; }lnode,*list; typedef关键字是给数据类型取别名的意思,后面的list指针是为了让后面使用起来更方便,不需要每次都定义指针了。 void lt(list &l).

xszdbc的博客 2963

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

逆置链表

逆置链表 1.创建新的链表,把要逆置的链表从最结尾把结点一个一个的取出来,尾插到新链表中,或者把要逆置的链表从头把结点一个一个的拿出来,头插到新链表中去。 2.用栈实现链表的逆置,链表的逆置就是要把在前面的链表放在后面,这跟栈先进先出的特点吻合 import java.util.Stack; public class reverseList { static class Node { ...

yangxiaozhan_的博客 1153

链表的逆置

数据结构实验之链表三:链表的逆置 Description 输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表的数据进行逆置,并输出逆置后的单链表数据。 Input 输入多个整数,以-1作为结束标志。 Output 输出逆置后的单链表数据。 Sample Input 12 56 4 6 55 15 33 62 -1 Output 62 33 15 55 6 4 56 12...

qq_45666654的博客 2348

链表的逆置(头插,就地逆置,递归)

数据结构实验之链表三:链表的逆置 Description 输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表的数据进行逆置,并输出逆置后的单链表数据。 Input 输入多个整数,以-1作为结束标志。 Output 输出逆置后的单链表数据。 Sample Input 12 56 4 6 55 15 33 62 -1 Output 62 33 15 55 6 4 56 12...

悠然青年帅的博客 676

链表逆置算法 C++实现

链表逆置算法 C++实现 链表结构: #include <iostream> using namespace std; // Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 整个链表逆置: 用一个新的空头指针,从第一个节点开始逐一接入新的头指针,新接入的节点的next为上一

Jinondo's Blog 1113

单链表逆置

单链表逆置 链表逆置问题是将链表的第一个元素和最后一个元素互换,第二个元素和倒数第二个元素互换······,直到将(a1,a2,a3·····an-1,an)置换成(an,an-1····,a3,a2,a1)。 图解: 代码实现: 逆置函数片段 void reverse(struct student *head) //链表逆置 { struct student *p,*q; p = head->next; //p指向首元结点 head->next = N

Czc1357618897的博客 3929

单链表原地逆置

单链表原地逆置 强烈建议拿根笔、拿张纸画画流程!!! 此方法改变原链表 //原地逆置(头插法) void ConverseLNode(LinkList &L) { LNode *p,*q; p = L->next; while(p->next!=NULL) { q = p->next; p->next = q->next; q->next = L->next; L->next = q; } } 完整代码 #include &

weixin_45106105的博客 1041

将链表逆置

将链表逆置 #include<stdio.h> #include<stdlib.h> #include<stdbool.h> typedef struct _node{ int number; struct _node *next; }Node; typedef struct { Node *head; Node *tail; }List; vo...

dsngnm的博客 332

双向链表的逆置

代码实现 将链表结点逆置(头插法) typedef struct Node { int data; Node* next; Node* prior; }Node,*List; void Reverse(List ps) { if(NULL == ps || NULL == ps->next) { return ; } List p1 = ps->next; List p2 = p1->next; List p3 = NULL; p1->next = NULL

mlyhzt的博客 1915
上一篇: 求数组中出现次数超过一半的数字
下一篇: 链表翻转(按K个一组)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值