单链表的逆置(C++版)

本文详细探讨了如何使用C++实现单链表的逆置,这是面试中常见的问题。通过改变节点的指向,而非交换节点数据,提供了一种更有效的方法。文章分为创建节点结构体、创建链表和逆置函数三个步骤,配合图示解释了逆置过程,最终实现了链表的反转,如将1 -> 2 -> 3 -> 4 -> 5逆置成5 -> 4 -> 3 -> 2 -> 1。
摘要由CSDN通过智能技术生成

单链表的逆置是一个很有趣的问题,同时也是很多公司在面试时经常会拿出来“为难”面试者的题,比如博主在面试Microsoft的时候就被问到了这个问题。

问题描述:写一个程序,创建一个单向链表,并通过逆置函数使得该链表的方向反转,即头变尾,尾变头。

比如一个链表是这样的:1 -> 2 -> 3 -> 4 -> 5,逆置后则变成:5 -> 4 -> 3 -> 2 -> 1。

分析:该问题可以有两种解法,一种是交换节点的数据,而不改变其内存的存储结构;第二种是改变所有节点的指向下一个节点的指针。

**显然第二种方法更加有效。

----------我---是---分---割---线-----------------------------------

代码描述:

1. 创建节点结构体

//创建链表节点结构体
struct node
{
    int data;
    node *next;
};

*这里补充说明一下C++语言与C语言创建结构体的区别

在C语言中定义一个结构体需要用到 "typedef"

typedef struct Student
{
    int id;
}Stu;

结构体名为Student,此处的Stu相当于struct Student的别名,在声明变量时,可以直接用Stu st1,相当于struct Student st1。当然,这里的结构体类型名Student也可以省略不写。

但在C++中定义结构体则更为简洁

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值