链表

链表链表的基本概念链表是一种常用的数据结构,它通过指针将一些列数据结点,连接成一个数据链。相对于数组,链表具有更好的动态性(非顺序存储)。数据域用来存储数据,指针域用于建立与下一个结点的联系。建立链表时无需预先知道数据总量的,可以随机的分配空间,可以高效的在链表中的任意位置实时插入或删除数据。链表的开销,主要是访问顺序性和组织链的空间损失。数组和链表的区别数组:一次性分配一块...
摘要由CSDN通过智能技术生成

链表

链表的基本概念

在这里插入图片描述

  • 链表是一种常用的数据结构,它通过指针将一些列数据结点,连接成一个数据链。相对于数组,链表具有更好的动态性(非顺序存储)。
  • 数据域用来存储数据,指针域用于建立与下一个结点的联系。
  • 建立链表时无需预先知道数据总量的,可以随机的分配空间,可以高效的在链表中的任意位置实时插入或删除数据。
  • 链表的开销,主要是访问顺序性和组织链的空间损失。

数组和链表的区别

  • 数组:一次性分配一块连续的存储区域。
    优点:随机访问元素效率高
    缺点:1) 需要分配一块连续的存储区域(很大区域,有可能分配失败)2) 删除和插入某个元素效率低
  • 链表:无需一次性分配一块连续的存储区域,只需分配n块节点存储区域,通过指针建立关系。
    优点:1) 不需要一块连续的存储区域 2) 删除和插入某个元素效率高
    缺点:随机访问元素效率低

有关结构体的自身引用

typedef struct A
{
   
	int a;
	int b;
	char *p;
}A;

//1、结构体可以嵌套另外一个结构体的任何类型变量
//2、结构体嵌套本结构体普通变量(不可以)
//      本结构体的类型大小无法确定,类型本质:固定大小内存块别名
//3、结构体嵌套本结构体指针变量(可以)
//      指针变量的空间能确定,32位, 4字节, 64位, 8字节
typedef struct B
{
   
	int a;
	A tmp1; //ok
	A *p1;   //ok

	//struct B tmp2;  //err 普通变量
	struct B *next; //32位, 4字节, 64位, 8字节	
}B;

链表节点

链表的节点实际上是结构体变量,此结构体包含数据域和指针域:

  • 数据域用来存储数据
  • 指针域用于建立与下一个结点的联系,当此节点为尾节点时,指针域的值为NULL
typedef struct Node 
{
   
	//数据域
	int id;
	char name[50];

	//指针域
	struct Node *next;       
}Node;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值