链表

链表详解(单链表、双向链表、链表逆序) 单链表 想了解单链表的一些概念可以看我另一篇博客: 链表基础 单链表结构体定义 //单链表的结构定义 typedef struct LNode { int data; //data存放结点数据域 struct LNode *next; //指向后继结点的指针 }LNode; 单链表的建立 (1)定义单链表的数据结构; (2)读取数据; (3)生成新结点; (4)将数据存入结点的成员变量中; (5)将新结点连接到表头或表尾。 重复(2)~(5)直到输入结束。 //头插法建立单链表 void c 阅读详情

无论数据是如何存储的,对改数据的操作都是一样的

我们至少可以通过两种结构来存储数据

数组链表
存取速度快查找某个位置的元素效率很低
插入和删除元素的效率很低(在数组上插入一个元素,我们可能需要移动已经存在的元素,腾出位置以便新元素插入该位置)插入删除元素效率高
数组的存储地址 = 数组的起始地址+偏移量
需要一个连续的很大的内存不需要一个连续的很大的内存

专业术语:
头结点

  • 头结点的数据类型和首节点的类型是一模一样的
  • 头结点是首节点前面那个节点
  • 头结点并不存放有效数据
  • 设置头结点的目的是为了方便对链表的操作

头指针

  • 存放头结点地址的指针变量

首节点

  • 存放第一个有效数据的节点

尾节点

  • 存放最后一个有效数据的节点

确定一个链表需要的参数:
一个 头指针

什么是链表?

链表是一种用来存储数据集合得数据结构

  • 元素通过指针依次相连
  • 最后一个元素的指针为空(NULL)
  • 它不会浪费空间,但会需要消耗额外的内存空间存储指针
  • 动态地进行内存单元分配的一种结构

单链表

singly linked list
单链表包括一组结点,每个结点都有一个next指针域,用来存储指向(逻辑上)下一个元素对应结点的指针,最后一个结点的next指针域的值为NULL,预示着已经达到链表的尾部。

struct node{
	int data;
	struct node *next;
};
typedef struct node NODETYPE

main(){
	NODETYPE s1, s2, s3, *begin, *p;
	s1.data = 100;	/*给变量中的data域赋值*/
	s2.data = 200;
	s2.data = 300;

	begin = &s1;
	s1.next = &s2;	/*使s1的域next指向s2*/
	s2.next = &s3;
	s3.next = NULL;
	
	p = begin;	/*移动p,使之依次指向s1、s2、s3,输出他们data域中的值*/

	while(p){
		printf(" %d", p->data);
		p = p->next; 	/*p顺序后移*/
	}
	

顺序访问链表中各结点的数据域

void printlist(NODETYPE *head){
	NODETYPE *p;
	p = head->next;
	if(p == '\0')
		printf("LINKLSIT IS NULL\n")
	else{
		printf("head");
		do{
			printf("->%d",p->data);		/*输出当前结点数据域中的值*/
			p = p->data;	/*move指向下一个结点*/
		}while(p!='\0');	/*未到链表尾,继续循环下去*/
	}
	printf("->end\n");
}
C++实现单向链表,双向链表,单向环形链表,双向环形链表 本文讲解了链表的四种类型以及数据结构,同时给出了四种链表的C++代码实现。 阅读详情

相关推荐

用链表实现3种类型的线性表(有序链表、无序链表、索引链表)

用链式实现的线性表,公共接口ADT跟上一篇一样 1,有序链表 成员变量和构造函数: private LinearNode front;private int count; public LinkedOrderedList(){ front = null; count = 0; 实现清单(将ADT和有序链表扩展

ThinkCode的专栏 2765

顺序访问链表中的节点——C语言基础

对链表中的节点进行顺序访问 前言:对链表的访问具体包括修改、运算和输出,作为C语言基础,这里只对输出进行阐释 一、算法描述 用一个工作指针p遍历整个链表,直到链表的结束标志为止,如果链表为空,输出提示信息。 二、代码讲解 //顺序输出函数 void list(struct stu *head){ struct stu *p; //构建一个遍历工作指针p p = head; //初始化 if(head != NULL){ printf("\nthe

Lanyan9的博客 1047

OpenWrt路由开启DDNS+端口转发进行外网访问

OpenWrt路由开启DDNS+端口转发进行外网访问(LuCI界面实现)--开篇一、准备工作二、开机!三、连接--结尾 –开篇 本篇适用于一切装有OpenWrt系统的路由器/软路由,只要你保证有WAN接口和一个光猫,甚至你不需要有LAN接口(当然前提是你能连接路由器的WIFI进后台,不然你只能通过LAN进后台咯)。所有的配置过程都是基于LuCI界面来的,当然大神们一般都通过SSH登陆路由使用命令配置,但我也不会啊,只能给个有GUI界面的教程了。 一、准备工作 一个装有OpenWrt系统的路由器/软路由并

秋之颂的博客 9万+

【Leetcode】反转链表 合并链表 相交链表 链表的回文结构

【Leetcode】反转链表 合并链表 相交链表 链表的回文结构

旋律 | 话语 | 色彩 | 情景 2383

Windows系统下LaTeX环境搭建与编辑器配置全攻略

本文详细介绍了在Windows系统下搭建LaTeX环境的完整流程,包括TeX Live的安装、TeXStudio编辑器的配置优化以及常见问题排查。特别针对中文用户推荐使用清华镜像源加速下载,并提供了XeLaTeX编译器配置、中文支持等实用技巧,帮助用户快速上手LaTeX文档编写。

weixin_42554408的博客 449

Debezium报错处理系列之二十一:Unable to connect: Communications link failure.The driver has not received any

Debezium报错系列之二十一:Unable to connect: Communications link failure.The driver has not received any。

zhengzaifeidelushang的博客 547

数据结构 —— java 单链表、双端链表、双向链表、无序链表、有序链表

文章目录链表不同链表的特点单链表(单端链表)双端链表双向链表 链表 上面是一个单链表的存储原理图,head为头节点,它不存放任何的数据,只是充当一个指向链表中真正存放数据的第一个节点的作用,而每个节点中都有一个next引用,指向下一个节点,就这样一节一节往下面记录,直到最后一个节点,其中的next指向null。 不同链表的特点 普通链表: 节点类保留下一节点的引用。链表类只保留头节点的引用,只能...

猎人在吃肉 4537

LoveSQL

LoveSQL(SQL注入详解) 1、根据题目,显然想到的是sql注入漏洞,直接尝试万能密码 2、此时url构造,查看字段数 /check.php?username=admin' order by 3%23&password=1 # 存在 /check.php?username=admin' order by 4%23&password=1 # 报错 因此,得到总共有三个字段数 注意:url中不能用#,应该用url编码%23 3、用union来查询测试注入点,查看回显点

lunan的博客 1562

数据结构01- 单链表、双端链表、双向链表、无序链表、有序链表

数据结构01- 单链表、双端链表、双向链表、无序链表、有序链表 0、节点 节点 是数据结构中的基础,是 构成复杂数据结构的基本组成单位。 public class Node { public long data; public Node next; public Node(long value) { this.data = value; } } 1、链表的定义 链表: 通常由一连串 节点 组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向 上一个 或 下一个

琦彦 7077

ABAP 后台作业里的消息机制:把 MESSAGE 写对,避免作业莫名取消

SAP后台作业消息处理机制解析 本文深入剖析了SAP系统中后台作业的消息处理机制,揭示了前台与后台执行环境的关键差异。核心发现包括: 后台作业对消息的处理规则: 所有消息写入Job log而不显示 根据消息类型决定是否继续执行 W警告在列表处理阶段会被自动转为E错误 关键异常处理: 通过error_message可捕获E/A类型消息 A类型消息会触发隐式数据库回滚 未被捕获的E/A消息将导致作业中断 实用解决方案: 将业务提示改为S或I类型 使用DISPLAY LIKE保持前台体验 通过error_mess

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2220

Java与OSG的梦幻联动:深入编译OpenSceneGraph的Java JNI桥梁,开启3D视觉盛宴的奇幻之旅

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀在编译OpenSceneGraph (OSG) 的Java版本时,首先需要了解OSG本身是一个主要用于3D图形和视觉仿真的开源库,它主要支持C++。然而,OSG 也支持通过JNI(Java Native Interface)与Java集成,这允许Java程序调用OSG的C++库。

java专栏 870

LeetCode链表(链表操作,反转链表,奇偶链表,排序链表)

本篇文章更注重于链表自身的特点。链表是一种通过指针串联在一起的线性结构。链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。链表的入口节点称为链表的头结点也就是head。(1)单链表每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。(2)双链表每一个节点有两个指针域。

ji_meng的博客 1820

汽车UDS诊断之诊断会话控制服务(0x10)深度剖析

DiagnosticSessionControl就是诊断会话控制。 请求消息定义 A_Data类型 参数名称 Cvt 字节值 助记符 #1 诊断会话控制请求SID M 0x10 DSC #2 子功能=[诊断会话类型] M 0x00-0xFF LEV_DS_ ...

心骗小白话的博客 7420

详解链表oJ<反转链表,链表的中间节点及链表的回文>

链表OJ

qq_75270497的博客 1039

记录Android Studio连接华为(nova)手机鸿蒙系统踩过的坑

鸿蒙系统的华为老机子比较麻烦,坑有点多,兄弟们加油!

沉迷单车的追风少年 7926

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数据结构之链表操作详解与示例(反转链表,合并链表,旋转链表,对链表排序)

本文介绍了链表的四种常见操作:反转链表、合并链表、旋转链表和对链表排序。每种操作都有其特定的应用场景和算法步骤,通过示例代码展示了如何实现这些操作。理解和掌握这些链表操作对于深入理解数据结构和算法至关重要。

qq_35320456的博客 1348

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

链表小总结

/ 结点的值int val;// 下一个结点// 节点的构造函数(无参)// 节点的构造函数(有一个参数)// 节点的构造函数(有两个参数)

m0_58257626的博客 1660

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

链表基础知识+移除链表元素+设计链表+反转链表

接下来说一说链表的定义。链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。这段代码定义了一个名为 `ListNode` 的类,它通常用于在Python中创建和操作链表。链表是一种线性数据结构,其中每个元素(通常称为节点)包含一个值和一个指向下一个节点的引用。

weixin_43710382的博客 1826

反转链表、旋转链表算法总结

1. 反转链表(力扣:206) 2. 反转链表 II(力扣:92) 3. 旋转链表(力扣:61)

卜大爷的博客 2万+

链表学习反转链表

链表是一种线性数据结构,其中元素不是连续存储在内存中的,而是通过指针连接起来。每个节点包含两部分:数据域和指向下一个节点的指针域。链表分为单向链表和双向链表,本文主要讨论单向链表的反转。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1247

Python与链表(含链表概念、链表定义、链表操作、链表相关例题)

Python与链表、链表基础概念、链表与数组区别、链表分类、链表增删改查、链表相关例题

Bala_lala的博客 1403

链表(单链表、双链表、单向环形链表)

Josephu问题为:设编号为1,2,...n的n个人围坐一圈,约定编号为k(1

weixin_52347460的博客 1173

链表 添加链表、搜索链表、删除链表

#include <stdio.h> #include <stdlib.h> /* 利用可变数组的思想:Linked Block 当中不用copy value */ /* 可变数组的缺陷:1.新申请空间,然后往新空间赋值数据花费时间;2.数组增长时,可能遇见内存限制 */ /* 单向链表思想:指针->头节点(数据+指针)->节点(数据+指针)->节点(数据...

一叶知秋 3084

【LC】反转链表, 相交链表, 环形链表

关于链表的刷题日志

trong_ 的烂笔头 1184
上一篇: 指针
下一篇: 女娲补天——Java
Azury0910
博客等级 码龄7年 11粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值