单链表

单链表在 Go 语言本身并没有在标准库里有相应的实现,我们可以自己设计单链表并实现相关的方法。

我们首先定义单链表中每个节点的数结构:

// 节点数据结构
type Element struct {
    Value interface{}
    next *Element
}
// 创建节点
func New(value interface{}) *Element{
    return &Element{
        Value: value,
        next:  nil,
    }
}
// 获取节点的下一跳 
func (e *Element) Next() *Element{
    return e.next
}

这里我定义的链表元素只存放两个属性,当前元素的元素值和后驱指针。

这里其实也可以参考 Go SDK 实现的双向链表,再定义个指向链表结构体的指针,为了简单实现,这里我就不具体定义了。

接着定义链表的数据结构:

我们有了结构体,那么下面我们可以根据结构体定义一些相应的方法为整个链表实现增减操作。

  • 设计查找的方法:

  • 设计插入方法

我这里插入分2种情况,第一种,从链表头部插入,第二种从链表尾部插入:

  • 设计删除方法

最后更新于