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

秒懂单链表及其反转(reverse)

什么是链表,这种数据结构是由一组Node组成的,这群Node一起表示了一个序列。链表是最普通,最简单的数据结构(物理地址不连续),它是实现其他数据结构如stack, queue等的基础

链表比起数组来,更易于插入,删除。

Node可以定义如下:

typedef int element_type;  
typedef struct node *node_ptr;  
  
struct node {  
element_type element;  
node_ptr next;  
}; 

 

 

另外关于要不要头节点这个问题,我建议加上头节点,理由如下:

 

1. 没有头节点,删除第一个节点后,不小心就丢失了List
2. 插入头部时,没有个直观的方法。
3. 通常的删除操作,都要先找到前一个节点,如果没有头节点,删除第一个节点就不一样了。

 

接下来重点实现单链表的反转,这也是常常考到的一个问题,下面是C语言实现:

void list_reverse(LIST L)  
{  
    if (L->next == NULL) return;  
    node_ptr p = L->next, first = L->next;  
    while (p != NULL && p->next != NULL) {  
        node_ptr next_node = p->next;  
        p->next = next_node->next;  
        next_node->next = first;  
        first = next_node;  
    }  
    L->next = first;  
}  

 

 

 --

转载于:https://www.cnblogs.com/Ph-one/p/6764338.html

相关文章:

  • C语言一个单链表的实现
  • linux 一个超简单的makefile
  • C语言一个双向链表的实现
  • 如何只在堆或者栈上分配类对象
  • mtk6589显示子系统笔记(一)
  • 如何配置DSI时钟频率
  • /dev/sda2 is mounted; will not make a filesystem here!
  • 怎样使用alsa API
  • ubuntu下如下错误alsa/asoundlib.h: No such file or directory
  • ubuntu:undefined reference to `snd_pcm_open'
  • ubuntu 12.04安装alsa-lib、alsa-utils【转】
  • malloc、calloc、realloc和alloca各种的区别
  • Alsa中PCM参数设置⭐⭐
  • alsa 编程
  • fopen
  • Android组件 - 收藏集 - 掘金
  • CentOS从零开始部署Nodejs项目
  • CSS 三角实现
  • es6--symbol
  • ES6语法详解(一)
  • EventListener原理
  • IP路由与转发
  • isset在php5.6-和php7.0+的一些差异
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Python_OOP
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Windows Containers 大冒险: 容器网络
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 猴子数据域名防封接口降低小说被封的风险
  • 老板让我十分钟上手nx-admin
  • 双管齐下,VMware的容器新战略
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • puppet连载22:define用法
  • ​io --- 处理流的核心工具​
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (33)STM32——485实验笔记
  • (done) 两个矩阵 “相似” 是什么意思?
  • (二)pulsar安装在独立的docker中,python测试
  • (规划)24届春招和25届暑假实习路线准备规划
  • (转)【Hibernate总结系列】使用举例
  • (转)winform之ListView
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • *Django中的Ajax 纯js的书写样式1
  • .libPaths()设置包加载目录
  • .net 发送邮件
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NetCore部署微服务(二)
  • .NET使用存储过程实现对数据库的增删改查
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [Bada开发]初步入口函数介绍
  • [C++]18:set和map的使用