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

链表数据结构

用途:
链表是一种用于计算机中存储与组织数据的结构,链表将数据以节点的形式串联起来,其存储的容量大小可以动态伸缩。
结构:

typedef  struct {int data; /*当前节点的数据*/node *next;/*下一个节点的指针*/node *last;/*上一个节点的指针*/
} list_node_t 

分类
仅指向下一个节点称之为单向链表(Singly Linked Lists)
【node0】->【node1】->NULL
同时指向上一个节点,为双向链表(Double Linked Lists)
NULL<-【node0】<=>【node1】->NULL
尾节点下一个节点指向头节点形成闭环为循环列表(Circular Linked Lists)
只要知道表中任何一个结点的地址,就可以遍历表中其他任一结点。适用于需要进行大量增添和删除元素操作而对访问元素无要求的,及预先无法确定大小的数据集合。
【node0】→【node1】 →【node0】
特点:
不限制存储空间,每次新增数据时才申请存储空间,不会造成浪费,也不会空间不足。顺序存储的数组大小一旦定义了就不能改变,但是链式存储的链表可以随时增减链表里面元素的数量。
添加数据与删除数据的操作时间复杂度都是 O(1)。链表里面插入和删除元素速率高,你不需要移动里面很多的元素就可以做到。
不能按照序号对数据进行随机访问。数组可以通过下标获得任意一个位置的元素,链表必须迭代找到某一个元素。
常规操作
初始化
链表初始化就是创建一个节点,这个接口叫做 head;

linked_list init_linked_list()
{node * n =(node*)malloc(sizeof(node));if(n==NULL){printf("申请空间失败");exit(1);} n->next=NULL;return n;
}node *head=init_linked_list();
head->data=3;//实际数据
head->next=head;//只有循环列表需要指向head

新增与插入数据
遍历与搜索数据
释放与清空链表

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

相关文章:

  • 汽车DTC故障内码与标准故障码的解析与转换
  • 零基础学习测试还是开发?
  • 如何加入new bing候补名单
  • 中国天气——西风带环流和寒潮
  • 2022黑马Redis跟学笔记.实战篇(四)
  • Allegro中如何删除多余D码操作指导
  • 学生投票系统-课后程序(JAVA基础案例教程-黑马程序员编著-第三章-课后作业)
  • 初始化一个列表python
  • 【electron】webview嵌入页面发送消息给父级页面
  • Whids:一款针对Windows操作系统的开源EDR
  • 初级调色转档CameraRaw
  • Mybatis源码(3) - Executor执行过程 | 一级缓存 | 二级缓存
  • 成为 Seatunnel 源码贡献者保姆级教程
  • MySQL的索引视图练习题
  • 【C++ Primer Plus】第四章:复合类型
  • 做外贸,你不能不懂的外贸流程知识
  • 日本机载激光雷达测深进展(一)日本启动测量90%沿岸水深项目
  • MySQL数据库调优————创建索引的原则和索引失效及解决方案
  • 设计师都在看的全球设计网站,你居然还不知道!
  • c++:缺省参数,函数重载
  • 深度学习算法面试常问问题(二)
  • 美国CPC认证是什么?儿童玩具亚马逊CPC认证审核有哪些问题?
  • 恭喜! SelectDB 五位开发者成为 Apache Doris 新晋 PMC 成员和 Committer!
  • 数据库面试题
  • [USACO2022-DEC-Bronze] T2 Feeding the Cows 题解
  • Unity法线贴图原理理解(为什么存在切线空间?存的值是什么?)
  • 【JavaWeb】传输层协议——UDP + TCP
  • C++ 中是用来修饰:内置类型变量、自定义对象、成员函数、返回值、函数参数
  • av 146 002
  • 小红书用户画像 | 小红书数据平台