面试经典(4)--链表逆序

【链表】C++链表反转、链表逆序打印 题目:C++实现链表逆序打印、链表反转 如何将链表逆序,取决于题目的要求。如果面试官只要求打印,一般不改动链表结构为好,如果要求改变链表的方向,则需要改变结构,再顺序打印。 方法1:只逆序打印,不改变结构。采用递归,到达尾结点时打印输出,否则进入下一个结点的递归,当递归一层层退出的时候,便可以实现从尾到头的打印。 方法2:头插法,改变结构。从第二个结点开始往后,依次把每个结点移至链表头部,要 阅读详情

题目:输入单链表的头结点,反转链表并输出反转之后的头结点。


pNode代表当前节点,修改pNode的时候,要知道他的前面节点,并保存后面节点,因为一旦pNode->next被修改,就和后边断开。

ListNode* reverse(ListNode *phead)
{
	ListNode *pReversedHead=NULL;
	ListNode *pNode=phead;
	ListNode *pPre=NULL;
	while(pNode!=NULL)
	{
		ListNode *pNext=pNode->next;
		if(pNext==NULL)
			pReversedHead=pNode;
		pNode->next=pPre;
		pPre=pNode;
		pNode=pNext;
	}
	return pReversedHead;
}

初始条件:pNode=phead,pPre=NULL;这个符合正常逻辑,从链表的第一个节点开始处理,第一个节点的前序节点为NULL。

中间处理:每次保存pNext的值,如果pNext=NULL,说明pNode为最后的节点,保存用来返回。

结束条件:pNode=NULL,说明所有的节点处理完毕。

测试用例:空链表、仅有一个节点的链表

如何实现链表的逆序? 如何实现链表的逆序? 下面介绍了两种方法:1.就地逆序法 2.插入法 单链表数据结构 /** * @program: 算法与数据结构 * @description: 单链表数据结构 * @author: 粉刷匠 * @create: 2019-04-11 20:02 */ public class LNode { int data; //数据域 LNode ne... 阅读详情

相关推荐

如何实现一个高效的单向链表逆序输出?-阿里面试

如何实现一个高效的单向链表逆序输出? 0. 需要考虑因素,高效应权衡多方面因素 数据量是否会很大 空间是否有限制 原始链表的结构是否可以更改 时间复杂度是否有限制 一个链表节点需要输出的元素有多个,例如链表中存的是自定义对象,有多个字段 1. 直接递归(简单,但O(n)空间复杂度不支持大数据量) // 直接递归实现核心代码片段 public void reverse(head){...

Kaiyang_Shao的博客 2718

链表逆序面试题

一道面试题:将单向链表按如下规则逆序: 5->4->3->2->1: pHead->5;pStart->3;  逆序结果:3->4->5->1->2 ; 5->4->3->2->1; pHead->5,pStart->1; 逆序结果:1->2->3->4->5; 5->4->3->2->1; pHead->5;pStart->5; 逆序结果:5->1->2->3->4; 要求不能分配

清闲老窝的专栏 832

【004】单链表(逆序)

1 .单链表的逆序操作是链表中的一个重要操作,也是面试中不可缺少的一个环节,几乎许多涉及到链表的面试题中都会提到如何将一个链表进行逆序的操作考点;下面采用“迭代循环”的方式来实现将一个链表进行逆序,如链表中原来的各节点值分别为:A B C D E 逆序后打印为:E D C B A----------------------------------

Postgres 数据库内核开发工程师 3274

数据结构链表倒序(面试题)

Node* ReverseList(Node *head) { if((head->next == NULL) || (head == NULL)) return head; Node *temp1 = head; Node *temp2; Node *temp3 = temp1->next; temp1->next = NULL; while(temp3-&g...

weixin_30606461的博客 156

最详细的Cadence OrCAD Capture自带元件库的介绍

最详细的Cadence OrCAD Capture自带元件库的介绍 本章节将介绍Cadence OrCAD Capture 软件自带的各类元件库的分类,方便大家在设计时能够快速的选择元件。 AMPLIFIER.OLB 共182个零件,存放模拟放大器,IC,如LM386,MAX457等。 ARITHMETIC.OLB 共182个零件...

LGCPCB的博客 6万+

Innovus快捷键大全:从入门到精通的效率提升指南

本文是Innovus快捷键从入门到精通的效率提升指南,旨在帮助芯片后端设计工程师通过掌握核心快捷键,将重复性鼠标操作转化为高效的肌肉记忆,从而显著提升版图设计、编辑和分析的工作流速度。文章系统讲解了视图导航、对象选择编辑、流程管理等关键快捷键组合,并提供了个性化配置与实战策略,助力工程师突破效率瓶颈,实现人机合一的流畅设计体验。

silver的专栏 797

面试题16:链表逆序

输入链表的头节点,输出翻转该链表

wakaka的博客 346

LTE信令流程实战:从Attach到Service Request的完整解析(附常见问题排查)

本文深入解析LTE信令流程中的Attach和Service Request关键环节,提供从基础原理到实战排查的完整指南。涵盖鉴权、承载建立等核心步骤,分析常见故障模式及优化方案,并附赠信令跟踪工具使用技巧,助力通信工程师提升网络运维效率。

alpha的博客 319

【面试题】链表的逆序操作

面试最常见的笔试题目,链表的反转 其中一次竟然碰到一个面试官让我现场写单链表反转,要求链表头指针不动,数据逆序。当时好像写的有问题,现在整理了一下,用了递归函数,解决了。 贴上源码: #include <stdio.h> #include <stdlib.h> typedef struct list_node { int data; struct list_node *next; }list_t; static struct list_node *create_node(in

weixin_42282031的博客 271

【技术解析】LUT-Fuse:如何通过可学习查找表与蒸馏技术,为边缘设备解锁实时图像融合

本文解析了ICCV 2025提出的LUT-Fuse技术,它通过可学习查找表与知识蒸馏,解决了边缘设备上图像融合的质量、速度与功耗“不可能三角”。该方法将复杂计算预编译为高速查找表,在Jetson等设备上实现100+ FPS的实时红外-可见光图像融合,为无人机、安防等应用提供了高效解决方案。

code8的博客 494

Beyond the Spec: Decoding Samsung‘s LPDDR6 Sub-Channel and Wide-NRZ Innovations

本文深入解析了三星LPDDR6内存的两大核心技术:Sub-Channel架构与Wide-NRZ信号技术。Sub-Channel架构通过将物理通道划分为多个独立子通道,实现了内存访问的细粒度控制,大幅提升了能效,尤其适用于AI与边缘计算场景。Wide-NRZ则通过增加并行数据线而非采用PAM4,在提升带宽的同时保持了优异的信号完整性与低功耗特性。

weixin_29209801的博客 134

【数据结构07】单链表的反转(腾讯面试题)

实现单链表的反转 真的是要被这题搞死了,这个问题看了几个小时,刚开始怎么都理解不了,还是很有难度的题目 整体分析: 代码实现: //方法:将单链表进行反转 public static void reverseList(HeroNode head){ //如果当亲链表为空或者只有一个节点,直接返回 if(head.next==null ||head.next.next==null...

你今天真好看呀 873

基于Matlab的无迹卡尔曼滤波惯性导航与DVL组合导航

航天航空领域中的惯性导航是一种基于惯性测量单元(Inertial Measurement Unit,IMU)的导航方法,可以提供航向、速度和位置等信息。深度/速度测量器(Doppler Velocity Log,DVL)是一种常用的传感器,可用于测量水下航行器的速度。通过将DVL与无迹卡尔曼滤波相结合,可以实现高精度的组合导航。本文介绍了基于Matlab的无迹卡尔曼滤波(UKF)惯性导航与DVL组合导航的方法。以上是一种简化的示例代码,您可以根据实际应用需求进行相应的修改和优化。

DevSavantX的博客 416

血拼一波算法:百度+Alibaba

一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。

2301_79655496的博客 916

Ceph入门到精通-更换osd、扩容osd

【代码】Ceph入门到精通-更换osd、扩容osd。

隔壁老瓦的专栏 1547

移位寄存器——用Verilog实现串入串出、串并和并串转换并进行Modelsim仿真

用Verilog实现串并转换 首先我们先要了并串和串并转换的原理 并串转换:先将八位数据暂存于一个八位寄存器器中,然后左移输出到一位输出端口,这里可以通过一个“移位”来实现,相当于实现了移位寄存器的功能。 串并转换:新输入的位值成为原来数据的最低位,将原来数据的最高位舍去,这里可以通过一个简单的“连接符”来实现。 我们这里采用两种方式来进行串并转换 一:lsb优先 Least Significant Bit,最低比特,最低位优先 二:msb优先 Most Significant Bit,最高比特,

H19981118的博客 2万+

单链表逆序:通过遍历一趟链表,将链表所有节点逆序

对转载出处进行代码实现 题目:给定一个带附加头节点的单链表,设first为其头指针,节点的结构为(data,link),data为数据域,link为指针域,试写出算法:通过遍历一趟链表,将链表中所有节点逆序连接 分析:这是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能开辟额外的节点空间(否则可以在遍历原链表的同时使用前插法建立一个逆序链表),有的没有明确说明,...

qq_39222327的博客 4050

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

单链表逆序

2、 单链表逆序          第二个题目是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的节点存储空间做中转,会得到一个比较低的分数。如何在不使用额外存储节点的情况下使一个单链表的所有节点逆序?我们先用迭代循环的思想来分析这个问题,链表的初始状态如图(1)所示: 图(1

autumn20080101的专栏 7万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

单向链表逆序

2、 单链表逆序          第二个题目是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的节点存储空间做中转,会得到一个比较低的分数。如何在不使用额外存储节点的情况下使一个单链表的所有节点逆序?我们先用迭代循环的思想来分析这个问题,链表的初始状态如图(1)所示: 图(1

王教余的专栏 4306

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

经典面试题之逆序打印单链表

题目:输入一个链表的头节点,从头到尾反过来打印每个节点的值。 思路:要打印单链表就必须遍历单链表,遍历的顺序是从头到尾,而打印的顺序是从尾到头,就是说最先遍历的节点最后打印,最后遍历的节点最先打印,就是所谓的后进先出,那么我们就可以用栈实现这种顺序,从头到尾遍历链表,每遍历一个节点将它保存到栈中,知道整个链表遍历完成,在从栈中一次取出节点并打印对应的值。 实现代码 void ResverPrintL

Hyacinth_Dy 3332

漫画:如何将一个链表“逆序”?

—————  第二天  —————(现实里的小灰在刚入行的时候,面试官也问了我这个问题,当时小灰就傻傻的问面试官是单链表还是双链表?然后就没然后了......)—————...

程序员小灰的博客 2332

面试现场如何实现链表的逆序?

前几天一位小伙伴去面试,被要求现场写如何实现链表的逆序?写完一种问还有没有其他方式?今天咱们就来聊聊到底如何实现链表的逆序以及有哪些方法?(文中的链表是单链表)给定一个带头节点的单链表...

田维常 638

【经典面试题】单链表的常见面试题

单链表的常见面试题

lolly1023的博客 1424

经典面试题之逆序打印链表

前几天面试,遇到这样一个题目!! 题目:输入一个链表的头节点,从头到尾反过来打印每个节点的值。 解题方法:运用递归算法 代码实现如下: #include<iostream> #include<malloc.h> using namespace std; typedef struct node { int val; struct node *next; }node, *Linklist; void _print(Linklist head) { Linkli

weixin_43658027的博客 222

【数据结构】单链表逆序

2、 单链表逆序          第二个题目是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的节点存储空间做中转,会得到一个比较低的分数。如何在不使用额外存储节点的情况下使一个单链表的所有节点逆序?我们先用迭代循环的思想来分析这个问题,链表的初始状态如图(1)所示: 图(1

It’s All Uphill From Here 2万+

python单向链表逆序_python经典面试算法题1.1:如何实现链表的逆序

本题目摘自《Python程序员面试算法宝典》,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中。1.1 如何实现链表的逆序【腾讯笔试题】难度系数:⭐⭐⭐考察频率:⭐⭐⭐⭐题目描述:给定一个带头结点的单链表,请将其逆序。即如果单链表原来为 head -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7,那么逆序后变为 head -> 7 -> 6 -> 5...

weixin_39858124的博客 300
上一篇: 面试经典(5)--二叉树最低公共祖先LCA
下一篇: 面试经典(3)---链表倒数第k个节点
OS技术解密
博客等级 码龄16年 3760粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值