From a5cc6eb04cebd82e1a9009e5278b05449a651c62 Mon Sep 17 00:00:00 2001 From: charlie <3140647@qq.com> Date: Fri, 20 May 2022 17:31:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- collections/linked_list.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/collections/linked_list.go b/collections/linked_list.go index 2337a02..a3f0042 100644 --- a/collections/linked_list.go +++ b/collections/linked_list.go @@ -1,2 +1,38 @@ 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]{} +}