import{_ as l,o as p,c as o,k as s,a,X as n}from"./chunks/framework.6e839c56.js";const C=JSON.parse('{"title":"Linklist","description":"","frontmatter":{},"headers":[],"relativePath":"api/packages/datastructure/link.md","filePath":"api/packages/datastructure/link.md"}'),e={name:"api/packages/datastructure/link.md"},t=s("h1",{id:"Linklist",tabindex:"-1"},[a("Linklist "),s("a",{class:"header-anchor",href:"#Linklist","aria-label":'Permalink to "Linklist"'},"")],-1),c=s("p",null,"Linklist是链表数据结构,它的节点有一个值和一个指向下一个节点的指针。",-1),r=s("div",{STYLE:"page-break-after: always;"},null,-1),y=s("h2",{id:"源码",tabindex:"-1"},[a("源码 "),s("a",{class:"header-anchor",href:"#源码","aria-label":'Permalink to "源码"'},"")],-1),i=s("ul",null,[s("li",null,[s("a",{href:"https://github.com/duke-git/lancet/blob/main/datastructure/link/singlylink.go",target:"_blank",rel:"noreferrer"},"https://github.com/duke-git/lancet/blob/main/datastructure/link/singlylink.go")]),s("li",null,[s("a",{href:"https://github.com/duke-git/lancet/blob/main/datastructure/link/doublylink.go",target:"_blank",rel:"noreferrer"},"https://github.com/duke-git/lancet/blob/main/datastructure/link/doublylink.go")])],-1),F=s("div",{STYLE:"page-break-after: always;"},null,-1),A=n(`
import (
link "github.com/duke-git/lancet/v2/datastructure/link"
)import (
link "github.com/duke-git/lancet/v2/datastructure/link"
)SingleLink是单向链表,它的节点有一个值和一个指向链表的下一个节点的指针。
创建SinglyLink指针实例
函数签名:
type LinkNode[T any] struct {
Value T
Next *LinkNode[T]
}
type SinglyLink[T any] struct {
Head *datastructure.LinkNode[T]
length int
}
func NewSinglyLink[T any]() *SinglyLink[T]type LinkNode[T any] struct {
Value T
Next *LinkNode[T]
}
type SinglyLink[T any] struct {
Head *datastructure.LinkNode[T]
length int
}
func NewSinglyLink[T any]() *SinglyLink[T]示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
fmt.Println(lk)
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
fmt.Println(lk)
}返回链表中所有节点值的切片
函数签名:
func (link *SinglyLink[T]) Values() []Tfunc (link *SinglyLink[T]) Values() []T示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}将值插入到索引处的链表中,索引应大于或等于0且小于或等于链表节点数
函数签名:
func (link *SinglyLink[T]) InsertAt(index int, value T)func (link *SinglyLink[T]) InsertAt(index int, value T)示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAt(1, 1) //do nothing
lk.InsertAt(0, 1)
lk.InsertAt(1, 2)
lk.InsertAt(2, 3)
lk.InsertAt(2, 4)
fmt.Println(lk.Values()) //[]int{1, 2, 4, 3}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAt(1, 1) //do nothing
lk.InsertAt(0, 1)
lk.InsertAt(1, 2)
lk.InsertAt(2, 3)
lk.InsertAt(2, 4)
fmt.Println(lk.Values()) //[]int{1, 2, 4, 3}
}将值插入到链表表头
函数签名:
func (link *SinglyLink[T]) InsertAtHead(value T)func (link *SinglyLink[T]) InsertAtHead(value T)示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtHead(1)
lk.InsertAtHead(2)
lk.InsertAtHead(3)
fmt.Println(lk.Values()) //[]int{3, 2, 1}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtHead(1)
lk.InsertAtHead(2)
lk.InsertAtHead(3)
fmt.Println(lk.Values()) //[]int{3, 2, 1}
}将值插入到链表末尾
函数签名:
func (link *SinglyLink[T]) InsertAtTail(value T)func (link *SinglyLink[T]) InsertAtTail(value T)示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}删除特定索引处的值,索引应大于或等于0且小于或等于链接节点数-1
函数签名:
func (link *SinglyLink[T]) DeleteAt(index int)func (link *SinglyLink[T]) DeleteAt(index int)示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.InsertAtTail(4)
lk.DeleteAt(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.InsertAtTail(4)
lk.DeleteAt(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}删除链表头节点
函数签名:
func (link *SinglyLink[T]) DeleteAtHead()func (link *SinglyLink[T]) DeleteAtHead()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.InsertAtTail(4)
lk.DeleteAtHead()
fmt.Println(lk.Values()) //[]int{2, 3, 4}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.InsertAtTail(4)
lk.DeleteAtHead()
fmt.Println(lk.Values()) //[]int{2, 3, 4}
}删除链表末尾节点
函数签名:
func (link *SinglyLink[T]) DeleteAtTail()func (link *SinglyLink[T]) DeleteAtTail()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.DeleteAtTail()
fmt.Println(lk.Values()) //[]int{1, 2}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.DeleteAtTail()
fmt.Println(lk.Values()) //[]int{1, 2}
}删除链表中指定的value值
函数签名:
func (link *SinglyLink[T]) DeleteValue(value T)func (link *SinglyLink[T]) DeleteValue(value T)示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.DeleteValue(2)
fmt.Println(lk.Values()) //[]int{1, 3}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.DeleteValue(2)
fmt.Println(lk.Values()) //[]int{1, 3}
}反转链表所有节点顺序
函数签名:
func (link *SinglyLink[T]) Reverse()func (link *SinglyLink[T]) Reverse()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Reverse()
fmt.Println(lk.Values()) //[]int{3, 2, 1}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Reverse()
fmt.Println(lk.Values()) //[]int{3, 2, 1}
}获取链表中部节点
函数签名:
func (link *SinglyLink[T]) GetMiddleNode() *datastructure.LinkNode[T]func (link *SinglyLink[T]) GetMiddleNode() *datastructure.LinkNode[T]示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
midNode := lk.GetMiddleNode()
fmt.Println(midNode.Value) //2
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
midNode := lk.GetMiddleNode()
fmt.Println(midNode.Value) //2
}获取链表节点数量
函数签名:
func (link *SinglyLink[T]) Size() intfunc (link *SinglyLink[T]) Size() int示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Size()) //3
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Size()) //3
}判断链表是否为空
函数签名:
func (link *SinglyLink[T]) IsEmpty() boolfunc (link *SinglyLink[T]) IsEmpty() bool示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
fmt.Println(lk.IsEmpty()) //true
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.IsEmpty()) //false
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
fmt.Println(lk.IsEmpty()) //true
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.IsEmpty()) //false
}清空链表所有节点
函数签名:
func (link *SinglyLink[T]) Clear()func (link *SinglyLink[T]) Clear()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Clear()
fmt.Println(lk.Values()) //
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Clear()
fmt.Println(lk.Values()) //
}打印链表结构
函数签名:
func (link *SinglyLink[T]) Clear()func (link *SinglyLink[T]) Clear()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Print() //[ &{Value:1 Pre:<nil> Next:0xc0000a4048}, &{Value:2 Pre:<nil> Next:0xc0000a4060}, &{Value:3 Pre:<nil> Next:<nil>} ]
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewSinglyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Print() //[ &{Value:1 Pre:<nil> Next:0xc0000a4048}, &{Value:2 Pre:<nil> Next:0xc0000a4060}, &{Value:3 Pre:<nil> Next:<nil>} ]
}DoublyLink是双向链表,它的节点有一个值,next指针指向下一个节点,pre指针指向前一个节点。
创建NewDoublyLink指针实例
函数签名:
type LinkNode[T any] struct {
Value T
Pre *LinkNode[T]
Next *LinkNode[T]
}
type DoublyLink[T any] struct {
Head *datastructure.LinkNode[T]
length int
}
func NewDoublyLink[T any]() *DoublyLink[T]type LinkNode[T any] struct {
Value T
Pre *LinkNode[T]
Next *LinkNode[T]
}
type DoublyLink[T any] struct {
Head *datastructure.LinkNode[T]
length int
}
func NewDoublyLink[T any]() *DoublyLink[T]示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
fmt.Println(lk)
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
fmt.Println(lk)
}返回链表中所有节点值的切片
函数签名:
func (link *DoublyLink[T]) Values() []Tfunc (link *DoublyLink[T]) Values() []T示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}将值插入到索引处的链表中,索引应大于或等于0且小于或等于链表节点数
函数签名:
func (link *DoublyLink[T]) InsertAt(index int, value T)func (link *DoublyLink[T]) InsertAt(index int, value T)示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAt(1, 1) //do nothing
lk.InsertAt(0, 1)
lk.InsertAt(1, 2)
lk.InsertAt(2, 3)
lk.InsertAt(2, 4)
fmt.Println(lk.Values()) //[]int{1, 2, 4, 3}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAt(1, 1) //do nothing
lk.InsertAt(0, 1)
lk.InsertAt(1, 2)
lk.InsertAt(2, 3)
lk.InsertAt(2, 4)
fmt.Println(lk.Values()) //[]int{1, 2, 4, 3}
}将值插入到链表表头
函数签名:
func (link *DoublyLink[T]) InsertAtHead(value T)func (link *DoublyLink[T]) InsertAtHead(value T)示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtHead(1)
lk.InsertAtHead(2)
lk.InsertAtHead(3)
fmt.Println(lk.Values()) //[]int{3, 2, 1}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtHead(1)
lk.InsertAtHead(2)
lk.InsertAtHead(3)
fmt.Println(lk.Values()) //[]int{3, 2, 1}
}将值插入到链表末尾
函数签名:
func (link *DoublyLink[T]) InsertAtTail(value T)func (link *DoublyLink[T]) InsertAtTail(value T)示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}删除特定索引处的值,索引应大于或等于0且小于或等于链接节点数-1
函数签名:
func (link *DoublyLink[T]) DeleteAt(index int)func (link *DoublyLink[T]) DeleteAt(index int)示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.InsertAtTail(4)
lk.DeleteAt(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.InsertAtTail(4)
lk.DeleteAt(3)
fmt.Println(lk.Values()) //[]int{1, 2, 3}
}删除链表头节点
函数签名:
func (link *DoublyLink[T]) DeleteAtHead()func (link *DoublyLink[T]) DeleteAtHead()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.InsertAtTail(4)
lk.DeleteAtHead()
fmt.Println(lk.Values()) //[]int{2, 3, 4}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.InsertAtTail(4)
lk.DeleteAtHead()
fmt.Println(lk.Values()) //[]int{2, 3, 4}
}删除链表末尾节点
函数签名:
func (link *DoublyLink[T]) DeleteAtTail()func (link *DoublyLink[T]) DeleteAtTail()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.DeleteAtTail()
fmt.Println(lk.Values()) //[]int{1, 2}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.DeleteAtTail()
fmt.Println(lk.Values()) //[]int{1, 2}
}反转链表所有节点顺序
函数签名:
func (link *DoublyLink[T]) Reverse()func (link *DoublyLink[T]) Reverse()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Reverse()
fmt.Println(lk.Values()) //[]int{3, 2, 1}
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Reverse()
fmt.Println(lk.Values()) //[]int{3, 2, 1}
}获取链表中部节点
函数签名:
func (link *DoublyLink[T]) GetMiddleNode() *datastructure.LinkNode[T]func (link *DoublyLink[T]) GetMiddleNode() *datastructure.LinkNode[T]示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
midNode := lk.GetMiddleNode()
fmt.Println(midNode.Value) //2
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
midNode := lk.GetMiddleNode()
fmt.Println(midNode.Value) //2
}获取链表节点数量
函数签名:
func (link *DoublyLink[T]) Size() intfunc (link *DoublyLink[T]) Size() int示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Size()) //3
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.Size()) //3
}判断链表是否为空
函数签名:
func (link *DoublyLink[T]) IsEmpty() boolfunc (link *DoublyLink[T]) IsEmpty() bool示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
fmt.Println(lk.IsEmpty()) //true
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.IsEmpty()) //false
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
fmt.Println(lk.IsEmpty()) //true
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
fmt.Println(lk.IsEmpty()) //false
}清空链表所有节点
函数签名:
func (link *DoublyLink[T]) Clear()func (link *DoublyLink[T]) Clear()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Clear()
fmt.Println(lk.Values()) //
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Clear()
fmt.Println(lk.Values()) //
}打印链表结构
函数签名:
func (link *DoublyLink[T]) Clear()func (link *DoublyLink[T]) Clear()示例:
package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Print() //
}package main
import (
"fmt"
link "github.com/duke-git/lancet/v2/datastructure/link"
)
func main() {
lk := link.NewDoublyLink[int]()
lk.InsertAtTail(1)
lk.InsertAtTail(2)
lk.InsertAtTail(3)
lk.Print() //
}