这一节,我们来介绍单链表这种数据结构。
简介
单链表是一种逻辑上连续,而在内存存储位置不连续的线性结构。使用单链表,在插入和删除已知节点时,可以以 O(1) 的时间复杂度完成。
单链表由一个个节点组成,每个节点包含当前元素,以及下一个节点的位置信息。就和网页上的连接类似,一个页面不仅有当前信息,还包含下一个网页的连接信息。通过指针或者引用,我们就可以像浏览网页那样,过渡到下一个节点。
Nim 语言简介
我们使用 Nim 语言实现系列数据结构。Nim 语言是一种高效而优雅的系统级编程语言,具体介绍可以查看 Nim 语言官网。
https://nim-lang.org/
https://nim-cn.com/
单链表的基本结构
首先创建单个节点,每个节点保存当前信息,以及下一个节点的位置信息。在 Nim语言中 ref 相当于指针或者引用, 我们使用 type 声明类型,星号表明该函数可以被其他模块访问。T 是 Nim 中的泛型,代表这个函数可以支持任意合理的类型,比如 int, float 等类型。object 就和面向对象语言的类差不多,可以继承。
value 代表当前元素的信息,next 指向下一个节点。
# 微信公众号 Nim 编程
type
SinglyNodeObj*[T] = object
value*: T
next*: ref SinglyNodeObj[T]
SinglyNode*[T] = ref SinglyNodeObj[T]
下面让我们定义一个单链表,