mirror of
https://github.com/charlienet/go-mixed.git
synced 2025-07-18 00:22:41 +08:00
链表
This commit is contained in:
@ -1,2 +1,38 @@
|
|||||||
package collections
|
package collections
|
||||||
|
|
||||||
|
type Item[T any] interface {
|
||||||
|
Less(T) bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// 单链表节点
|
||||||
|
type linkedNode[T Item[T]] struct {
|
||||||
|
item T
|
||||||
|
next *linkedNode[T]
|
||||||
|
}
|
||||||
|
|
||||||
|
// 双向链接节点
|
||||||
|
type doubleLinkedNode[T Item[T]] struct {
|
||||||
|
item T
|
||||||
|
prev *linkedNode[T]
|
||||||
|
next *linkedNode[T]
|
||||||
|
}
|
||||||
|
|
||||||
|
type LinkedList[T Item[T]] struct {
|
||||||
|
head, tail *linkedNode[T]
|
||||||
|
size int
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始化单向链表
|
||||||
|
func NewLinkedList[T Item[T]]() *LinkedList[T] {
|
||||||
|
return &LinkedList[T]{}
|
||||||
|
}
|
||||||
|
|
||||||
|
type DLinkedList[T Item[T]] struct {
|
||||||
|
head, tail *doubleLinkedNode[T]
|
||||||
|
size int
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始化双向链表
|
||||||
|
func NewDoubleLinkedLis[T Item[T]]() *DLinkedList[T] {
|
||||||
|
return &DLinkedList[T]{}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user