当前位置: 首页 > news >正文

反转链表的实现

 题目描述:

给出一个链表的头节点,将其反转,并返回新的头节点

思路1:反转地址

将每个节点里的地址由指向下一个节点变为指向前一个节点

定义三个结构体指针n1,n2,n3,n1表示改后指针的地址,n2表示要修改结构体里next的节点,n3用来存储下一个节点,如果没有n3,修改n2的next之后,就找不到下一个节点了,迭代就不能实现。

注意:链表可能为空链表,要讨论链表为空链表的情况 

n3为空时就不能指向下一个节点,会非法访问地址,因此还要判断n3是否为空


struct ListNode* reverseList(struct ListNode* head)
{//当链表为空时,返回NULLif (head == NULL)return NULL;else{//初始条件struct ListNode* n1 = NULL;struct ListNode* n2 = head;struct ListNode* n3 = n2->next;//结束条件while (n2){n2->next = n1;n1 = n2;n2 = n3;//n3不能为空if (n3)n3 = n3->next;}return n2;}
}

思路2:头插法

取原链表的节点,头插到新链表

注意:要记录头插到新链表的下一个节点next,同时记录当时插入的节点newhead

struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* newhead = NULL;struct ListNode* cur = head;while (cur){//记录下一个节点的位置struct ListNode* next = cur->next;cur->next = newhead;//记录插入新链表的节点newhead = cur;cur = next;//寻找原链表的下一个节点,继续插入}return newhead;}

http://www.lryc.cn/news/250482.html

相关文章:

  • python之pyqt专栏6-信号与槽2
  • C语言中一些特殊字符的输出
  • Opencv制作电子签名(涉及知识点:像素过滤,图片通用resize函数,像素大于某个阈值则赋值为其它的像素值)
  • 【漏洞复现】大华智慧园区综合管理平台deleteFtp接口远程命令执行
  • Unity Image - 镜像
  • 深入Spring Security魔幻山谷-获取认证机制核心原理讲解(新版)
  • 【知网稳定检索】第九届社会科学与经济发展国际学术会议 (ICSSED 2024)
  • 使用Spark写入数据到数据库表
  • Codebeamer—软件全生命周期管理轻量级平台
  • Yocto - bb脚本中使用的SRC_URI、SRCREV和S
  • LeetCode | 965. 单值二叉树
  • YOLOv8创新魔改教程(一)如何进行模块创新
  • postgresql-shared_buffers参数详解
  • windows10 Arcgis pro3.0-3.1
  • Apache Airflow (十四) :Airflow分布式集群搭建及测试
  • 解决VSCode按住Ctrl(or Command) 点击鼠标左键不跳转的问题(不能Go to Definition)
  • 使用DrlParser 检测drl文件是否有错误
  • ArcGIS中基于人口数据计算人口密度的方法
  • 在CentOS 8.2中安装Percona Xtrabackup 8.0.x备份MySql
  • javascript中的正则表达式的相关知识积累
  • 51k+ Star!动画图解、一键运行的数据结构与算法教程!
  • 4.7 矩阵的转置运算(C语言实现)
  • 快速掌握Pyqt5的9种显示控件
  • 【WP】Geek Challenge 2023 web 部分wp
  • Elasticsearch:为现代搜索工作流程和生成式人工智能应用程序铺平道路
  • 【WinForm.NET开发】Windows窗体开发概述
  • WPF 简单绘制矩形
  • crui_lvgl 一个LVGL的DSL辅助工具的设想
  • 公共部门生成式人工智能的未来
  • 【报名】2023产业区块链生态日暨 FISCO BCOS 开源六周年生态大会