实现一个支持泛型的链表

This commit is contained in:
Hami Lemon 2022-03-28 17:38:09 +08:00
parent d71a05e4b1
commit 5f49bde3ae
3 changed files with 508 additions and 0 deletions

48
glist/list.go Normal file
View file

@ -0,0 +1,48 @@
package glist
// List 一个基本的列表
type List[E any] interface {
// Size 获取列表中数据个数
Size() uint
//IsEmpty 判断列表是否为空如果为空返回true否则返回false
IsEmpty() bool
// IsNotEmpty 判断列表是否非空,如果列表不为空,返回true,否则返回false
IsNotEmpty() bool
// Append 向列表尾部添加一个元素
Append(element E) bool
// Insert 向列表指定索引处插入一个元素,如果插入成功返回true,否则返回false
Insert(index uint, element E) bool
// Remove 从列表中移除元素element,如果元素不存在,则返回false
Remove(index uint) bool
// Get 从列表中获取索引为index元素的指针,索引从0开始,如果索引超出范围则返回nil
Get(index uint) *E
// Set 改变列表中索引为index的元素的值,如果索引超出范围则返回false
Set(index uint, element E) bool
// Iterator 获取列表的迭代器
Iterator() Iterator[E]
}
// Queue 队列
type Queue[E any] interface {
List[E]
// PushBack 队列尾部添加元素,添加成功返回true
PushBack(element E) bool
// PushFront 队列头部添加元素,添加成功返回true
PushFront(element E) bool
// PopBack 删除队列尾部的元素,返回被删除的元素的指针,如果队列为空,则返回nil
PopBack() *E
// PopFront 删除队列头部的元素,返回被删除元素的指针,如果队列为空,返回nil
PopFront() *E
// PullBack 获取队列尾部的元素的指针,不会删除,如果队列为空,返回nil
PullBack() *E
// PullFront 获取队列头部的元素的指针,不会删除,如果队列为空,返回nil
PullFront() *E
}
// Iterator 列表迭代器
type Iterator[E any] interface {
// Has 是否还有元素
Has() bool
// Next 获取元素
Next() E
}