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

C++算法之代码随想录(链表)——基础知识

(1)什么是链表

        链表是一种线性数据结构。常见的单链表由两部分组成,value(存储节点的值)和next(存储指向下一个节点地址的指针)。链表的头节点称为head。创建链表一般使用结构体(struct)。例如。

strcut  Node{

        int value;

        Node* next;

       Node(int x):val(x),next(null) { } //构造函数

}

(2)链表的分类

        1.单链表——(最常用)上面介绍过了。

        2.双向链表 ——每个节点中除了value和next外,还有个指针prev指向上一个节点。头节点的prev指向null。例如 

strcut  B_Node{

        B_Node* prev;

        int value;

        B_Node* next;

        B_Node(int x):val(x),next(null),prev(null) { } //构造函数

}

        3.循环链表——与双向链表非常相似,不同点是循环链表的头节点中的prev指针指向尾节点。尾节点的的next指针指向头结点。形成了一个环。

(3)链表的存储

        链表的存储在内存中是不连续的,只能通过节点指针的方式进行访问。

(4)链表的定义

        通过结构体(strcut)创建,一般也就是上边的两种形式。构造函数可写可不写。不写C++会自动创建一个。不过不会初始化成员变量。

(5)链表的操作

        1.添加节点。链表的访问只能通过指针进行。想要添加节点,就要把上一个节点的指针指向要添加的节点,再把添加的节点的指针原来的下一个节点即可。

        2.删除节点:同样通过节点指针实现。将要删除的节点的上一个节点的指针指向删除节点指针指向的下一个节点即可。同时释放删除节点的内存。

        这个结合图解看比较容易理解。可以看代码随想录的图解。

(6)性能分析

        插入和删除:O(1);直接尾部插入即可。

        访问:O(n);只能线性访问。

        适合场景:数据量不固定,频繁插入和删除,较少查询的。

        可以与数组进行对比。(它俩刚好相反,自己想一想)

        链表的基础知识就这么多,但它是一种很重要的数据结构。理解其特性才能更好的解决相关的算法题。

相关文章:

  • 解决opencv中文路径问题
  • 力扣热题100刷题day63|49.字母异位词分组
  • Windows 图形显示驱动开发-WDDM 1.2功能_WDDM 1.2 和 Windows 8
  • Uniapp Vue 实现当前日期到给定日期的倒计时组件开发
  • 8.4 容器2
  • 尼日利亚拉各斯云服务器和VPS的综合分析,涵盖其优势、价格、推荐服务商及选择建议
  • 大模型论文:Language Models are Unsupervised Multitask Learners(GPT2)
  • netstat 查看端口占用、杀死进程
  • JAVA实现在H5页面中点击链接直接进入微信小程序
  • 课堂总结。
  • edge 更新到135后,Clash 打开后,正常网页也会自动跳转
  • 微服务拆分的原则、时机、方法以及常见问题
  • C++中stack函数的用法示例
  • 大模型——Llama Stack快速入门 部署构建AI大模型指南
  • 探索 Vue 3 中 vue-router 的 router.resolve () API
  • Python编程快速上手 让繁琐工作自动化笔记
  • 身份证号实名认证接口:让身份核验变得简单与高效
  • VMware安装飞牛私有云fnOS并挂载小雅Alist实现异地远程访问
  • BUUCTF-web刷题篇(21)
  • 3.8/Q1,GBD数据库最新文章解读
  • 吉林企业网络推广方法/安卓优化大师官方下载
  • 网站建设业务培训/seo搜外
  • 南京做网站品牌/网络广告营销成功案例
  • 如何做一个营销型网站/爱站工具查询
  • 现在石家庄做网站的公司有哪几家/查询网入口
  • 网络彩票的网站怎么做/怎么推广自己的公司