queue

package
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2022 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsAdjoin

func IsAdjoin[T num.Q](p, q *Node[T]) bool

邻近判断,p, q节点紧邻且p是q的直接前驱

Types

type Node

type Node[T num.Q] struct {
	// contains filtered or unexported fields
}

链表节点定义,下方代码直接从双向链表中复制

func FullNewNode

func FullNewNode[T num.Q](e T, pre, next *Node[T]) *Node[T]

节点完全构造,提供节点的所有信息进行构造 提示:不会修改参数中被指向的节点,调用方需要自行调整被指向节点的指针信息

func NewNode

func NewNode[T num.Q](e T) *Node[T]

节点构造方法

func (*Node[T]) DeepEqual

func (this *Node[T]) DeepEqual(another *Node[T]) (equal bool)

节点值判等,底层值相等,会比较其中的指针指向 定义:一个节点在 值 层次上的相等包括 容纳的元素e和前后指针

func (*Node[T]) Get

func (this *Node[T]) Get() (element T)

获取元素

func (*Node[T]) InsertAsNext

func (this *Node[T]) InsertAsNext(e T) (xnode *Node[T])

元素 后插入算法,作为当前节点的直接后继插入,返回插入节点的地址

func (*Node[T]) InsertAsPre

func (this *Node[T]) InsertAsPre(e T) (xnode *Node[T])

元素 前插入算法,作为当前节点的直接前驱插入,返回插入节点的地址 提示:可以在链表的头部插入,即使头部没有前驱节点

func (*Node[T]) InsertNodeAsNext

func (this *Node[T]) InsertNodeAsNext(p *Node[T]) (xnode *Node[T])

节点 后插入算法,将节点p作为当前节点的直接后继插入,返回插入后的后继节点

func (*Node[T]) InsertNodeAsPre

func (this *Node[T]) InsertNodeAsPre(p *Node[T]) (xnode *Node[T])

节点 前插入算法,将节点p作为当前节点的直接后继插入,返回插入后的前驱节点

func (*Node[T]) IsBetween

func (this *Node[T]) IsBetween(p, q *Node[T]) bool

居中判断,本节点位于链表上的 p, q节点之间

func (*Node[T]) MoveToAfter

func (this *Node[T]) MoveToAfter(targetNode *Node[T]) (xnode *Node[T])

节点移动,将本节点移动到节点p后方,返回移动后本节点的后继节点

func (*Node[T]) NextNode

func (this *Node[T]) NextNode() *Node[T]

后一节点,返回当前节点的直接后继节点的引用

func (*Node[T]) PreNode

func (this *Node[T]) PreNode() *Node[T]

前一节点,返回当前节点的直接前驱节点的引用

func (*Node[T]) Put

func (this *Node[T]) Put(e T) (element T)

修改元素,并返回原元素

func (*Node[T]) Remove

func (this *Node[T]) Remove() (element T)

移除节点,返回被移除节点内的元素值

type Queue

type Queue[T num.Q] struct {
	// contains filtered or unexported fields
}

不使用链表,从头构建。但会复制链表相关的代码

func New

func New[T num.Q]() *Queue[T]

构造空队列

func NewFromSlice

func NewFromSlice[T num.Q](sourceSlice []T) *Queue[T]

从切片构造

func (*Queue[T]) Clear

func (this *Queue[T]) Clear()

清空队列

func (*Queue[T]) DeepEqual

func (this *Queue[T]) DeepEqual(another *Queue[T]) (equal bool)

值判等,以值相等原则进行比较 定义:一个列表在"内容视图"上的相等包括:容量、链表的元素序列 相等,忽略其中的指针

func (*Queue[T]) Dequeue

func (this *Queue[T]) Dequeue() (element T)

头部出列,删除队列头部节点,并返回被删除节点内的元素e

func (*Queue[T]) Enqueue

func (this *Queue[T]) Enqueue(e T) *Node[T]

尾部入列,将元素e加入队列尾部

func (*Queue[T]) Front

func (this *Queue[T]) Front() (element T)

队首

func (*Queue[T]) FrontNode

func (this *Queue[T]) FrontNode() *Node[T]

队首节点,返回队首节点

func (*Queue[T]) IsEmpty

func (this *Queue[T]) IsEmpty() (isEmpty bool)

判空

func (*Queue[T]) Size

func (this *Queue[T]) Size() int

容器方法 容量

func (*Queue[T]) String

func (this *Queue[T]) String() (retString string)

序列化函数

func (*Queue[T]) ToSlice

func (this *Queue[T]) ToSlice() (newSlice []T)

转换为一个新的切片返回

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL