前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >链表第一课

链表第一课

作者头像
mwangblog
发布2018-08-14 18:11:05
3010
发布2018-08-14 18:11:05
举报
文章被收录于专栏:mwangblogmwangblog

链表是一种基础的数据结构,它表示一列元素。

链表由节点(Node)组成,一个节点包含两个变量,一个变量存储我们需要保存的数据,另一个变量指向下一个节点,如下图所示:

在程序中表示如下:

代码语言:javascript
复制
private class Node{
    Item item;    // 保存数据
    Node next;   // 指向下一个节点}

若干个这样的节点就可以组成一个链表。此外,我们还需要两个变量,分别指向链表的头节点和尾节点:本文使用first变量指向头节点,last变量指向尾节点。

下面介绍四个链表的操作:

  • 创建第一个节点。
  • 在表头添加节点。
  • 在表尾添加节点。
  • 在表头删除节点。

创建第一个节点

创建第一个节点非常容易,只需要新建一个节点,并将变量first和last都指向这个节点即可:

这个节点的next变量为null(空),意味着它不指向其他节点,也就是说它是最后一个节点。它还是第一个节点,所以last和first变量都指向它。

这个节点的item变量被赋值为boy,这是我们希望存储的数据。

在表头添加节点

在表头添加节点需要使用一个临时变量,这里把这个临时变量叫做oldfirst,它指向添加新节点之前的头节点。

在表头添加节点的过程如下:

  • 将oldfirst变量指向头节点;
  • 新建一个节点并将first变量指向它;
  • 将新节点的next变量指向oldfirst变量所指的节点。

这样,新建的节点成了整个链表的头节点,而原先的头节点成了链表的第二个节点。如下图:

至此,我们得到了一条拥有两个节点的链表:

在表尾添加节点

在表尾添加节点和在表头添加节点非常相似,过程如下:

  • 将oldlast变量指向尾节点;
  • 新建一个节点并将last变量指向他;
  • 将oldlast变量所指节点的next变量指向新节点。

这样,新添加的节点变成了尾节点,原先的尾节点变成了倒数第二个节点。

至此,我们拥有了一条由三个节点构成的链表:

在表头删除节点

在表头删除节点很简单,只需要将first变量指向第二个节点(头节点next变量所指的节点),然后让原先的头节点随风而去即可:

链表一个典型的应用是在栈(LIFO)和队列(FIFO)中,栈使用后进先出的策略,在表头添加节点,在表头删除节点;队列使用先进先出的策略,在表头添加节点,在表尾删除节点。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 mwangblog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建第一个节点
  • 在表头添加节点
  • 在表尾添加节点
  • 在表头删除节点
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档