链表逆置

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;
}


Rosetta基础2:preparing ligand Rosetta是基于残基,也就是说Rosetta不把原子单独对待,而是把它们看作一个完整的化学实体。为了实现这个目标,Rosetta必须知道键长、键角以及其它性质。对标准残基和小分子残基模型都是必须的。Rosetta在params文件中对残基的性质进行编码。Rosetta数据库包含常见氨基酸残基和小分子残基的parmas文件。当我们添加新的配体时,需要生成新的parms文件。 What is a Params File params文件包含残基的几何形状和化学特征的信息,为了让Rosetta理解怎样运行这个 阅读详情

相关推荐

BMS短路测试避坑指南:从炸管到稳定,我是如何搞定MOS管和TVS的

本文详细记录了BMS短路测试中MOS管和TVS的优化过程,从驱动电阻调整、PCB寄生参数控制到TVS选配策略,提供了一套实用的调试方法论。通过实战案例解析,帮助工程师避免常见陷阱,实现稳定可靠的短路测试性能。

weixin_30652897的博客 140

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

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

m0_58397166的博客 8万+

Mac上Office合法安装与激活全指南:2021/2024/M365区别解析

Office是微软办公套件的核心产品,其在macOS平台的部署逻辑与Windows截然不同——不依赖传统密钥激活,而是基于Microsoft账户与设备标识的云端绑定机制。理解这一原理,是解决‘无法验证开发者’‘打不开’‘功能受限’等常见问题的前提。Office 2021代表永久许可模型,Office 2024 LTSC面向企业离线场景,Microsoft 365则是持续订阅服务,三者在授权验证方式、更新策略与系统兼容性上存在本质差异。实际应用中,需结合macOS版本、芯片架构(Intel/Apple Sil

weixin_33491377的博客 1243

单链表的逆置方法

前言 单链表的逆置方法有很多种,此文简要说明以下两种方法 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万+

基于FME—三调篇—尖锐角及小缝隙处理

1 问题分析: 该功能实现在FME较为简单,相对ARCGIS模型构建器以及ARCGIS ENGINE,FME更适合无代码基础的人群。在三调内业数据处理要求中,尖锐角是不允许存在的。本文基于FME实现了对尖锐角的自动查询与消除以及自动处理在消除尖锐角过程中产生的缝隙,并进行了拓扑检查,实现自动化批量处理尖锐角的功能,提高工作效率。 2 总体思路: 2.1 实现功能分析: 1.找出小于指定角度的尖锐角...

qq_33315579的博客 9180

半导体设备上位机开发:我的经验与新人指导

半导体设备上位机开发是一项复杂而富有挑战性的工作,需要扎实的技术基础和丰富的经验。如果你对半导体设备上位机开发感兴趣,欢迎随时与我交流,我会尽力帮助你!

qq_43518667的博客 2729

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

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

2301_80224556的博客 6968

保姆级教程:用CH34xSerCfg工具修改USB转串口芯片的VID/PID,避免驱动冲突

本文详细介绍了如何使用CH34xSerCfg工具修改USB转串口芯片的VID/PID,解决驱动冲突问题。通过实战案例和配置技巧,帮助开发者高效管理嵌入式设备,避免常见的USB设备识别问题,提升开发效率。

weixin_30924239的博客 224

单链表的逆置(c语言)

单链表

没技术的博客 3161

43_AI短片实战第十六弹:AIGC补充特写镜头——首尾帧衔接与多图抽卡技巧

本文介绍了使用Templa AI平台生成"怪兽爬车"特写镜头并衔接"甩尾摔下"动作的完整流程。首先通过AI生成4张怪兽趴在车顶的特写画面,重点选择展示怪兽与车顶关系的构图(16:9比例)。然后将选定的首帧图与已有尾帧图输入AI,生成7秒左右的过渡视频,实现从"稳定趴车"到"开始摔落"的自然衔接。整个过程展示了单图抽卡策略、首尾帧选择标准,以及如何利用AI生成时间进行其他剪辑任务的并行处理方法。最终产出包括特写首帧图、过渡视频文件和更新后的剪辑项目。

Open 76

YOLOv11 环境配置全流程 | 从零开始搭建训练与推理环境

YOLOv11环境配置与训练全流程指南 本文详细介绍了YOLOv11目标检测模型的环境配置、训练与推理全流程。内容包括: 环境要求:列出GPU、CUDA、Python等组件的版本要求,提供快速检查脚本 Windows配置: CUDA 12.6和cuDNN 8.9.7安装步骤 使用Conda创建隔离环境 PyTorch GPU版本安装方法 IDE环境配置 Linux配置:提供Ubuntu 22.04下的CUDA、cuDNN安装命令和Conda环境搭建 Docker方案:提供一键式容器化部署命令 训练实战: 数

shrgegrb的博客 2016

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

具身智能(26):RDK S100的LeRobot或Agile X piper机械臂控制模型

本文档详细介绍了基于ROS2的机器人控制模型架构与标定数据联动机制。核心采用"感知-规划-控制"闭环流程,通过激光雷达、相机和IMU的融合数据实现厘米级定位(≤1cm)。文档包含两大控制模型配置:1)RDKLeRobot模型,重点说明PID参数调节和标定文件路径设置;2)AgileXPiper模型,强调驱动安装与外部标定文件集成。针对常见问题提供解决方案,如控制指令无响应需验证标定路径,运动偏差过大需重新标定等。最后给出批量部署方案,通过复制基准配置文件实现多机器人快速配置,要求定位偏差

码农17年的博客 179

链表逆置的两种方法

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

lxylxylxy的博客 9044

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

weixin_43204126的博客 3588

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

栈的链表逆置

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

xszdbc的博客 2963

逆置链表

逆置链表 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、付费专栏及课程。

余额充值