Documentation ¶
Index ¶
- func GetRevKthFromLinkList(head *LinkListNode, k int) (int, error)
- func IsLinkListLoop(head *LinkListNode) bool
- func ReverseRange(from *ListNode, to *ListNode)
- type DualLinkList
- func (dll *DualLinkList) Append(value int)
- func (dll *DualLinkList) DeleteByValue(value int) *DualLinkListNode
- func (dll *DualLinkList) Find(value int) *DualLinkListNode
- func (dll *DualLinkList) Insert(value int)
- func (dll *DualLinkList) Pop() *DualLinkListNode
- func (dll *DualLinkList) Shift() *DualLinkListNode
- func (dll *DualLinkList) Visit(fn func(node *DualLinkListNode))
- type DualLinkListNode
- type LinkList
- func (ll *LinkList) Delete() *LinkListNode
- func (ll *LinkList) DeleteByValue(value int) *LinkListNode
- func (ll *LinkList) Find(value int) *LinkListNode
- func (ll *LinkList) Insert(value int) *LinkListNode
- func (ll *LinkList) InsertAfter(value int, pos *LinkListNode)
- func (ll *LinkList) Visit(fn func(node *LinkListNode))
- type LinkListNode
- type List
- func (l *List) Head() *ListElement
- func (l *List) InsertAfter(v interface{}, pos *ListElement) *ListElement
- func (l *List) InsertBefore(v interface{}, pos *ListElement) *ListElement
- func (l *List) Len() int
- func (l *List) MoveAfter(el, pos *ListElement)
- func (l *List) MoveBefore(el, pos *ListElement)
- func (l *List) Remove(el *ListElement) interface{}
- func (l *List) Tail() *ListElement
- type ListElement
- type ListNode
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetRevKthFromLinkList ¶
func GetRevKthFromLinkList(head *LinkListNode, k int) (int, error)
GetRevKthFromLinkList 获取链表倒数第k个数
func IsLinkListLoop ¶
func IsLinkListLoop(head *LinkListNode) bool
IsLinkListLoop 是否存在闭环,两种实现 1 增加一个外部存储(hash map)标记已遍历的节点看是否有重复 2 使用两个指针,采用不同的步进长度,如果两者相遇则表示有环路
func ReverseRange ¶
ReverseRange 原地反转(from, to)之间的链表,不包含from/to
Types ¶
type DualLinkList ¶
type DualLinkList struct {
// contains filtered or unexported fields
}
func CreateDualLinkList ¶
func CreateDualLinkList() *DualLinkList
func (*DualLinkList) DeleteByValue ¶
func (dll *DualLinkList) DeleteByValue(value int) *DualLinkListNode
DeleteByValue 根据取值删除
func (*DualLinkList) Find ¶
func (dll *DualLinkList) Find(value int) *DualLinkListNode
func (*DualLinkList) Visit ¶
func (dll *DualLinkList) Visit(fn func(node *DualLinkListNode))
Visit 遍历高阶函数
type DualLinkListNode ¶
type DualLinkListNode struct {
// contains filtered or unexported fields
}
type LinkList ¶
type LinkList struct {
// contains filtered or unexported fields
}
func CreateLinkList ¶
func CreateLinkList() *LinkList
func MergeSortedLinkList ¶
MergeSortedLinkList 合并有序链表 1: 归并排序,开一个新的链表,每次将小的放进去 2: 原地归并,使用其中一条作为基线进行归并,找到两者的小值之后,再在基线上移动游标寻找插入位置
func (*LinkList) Find ¶
func (ll *LinkList) Find(value int) *LinkListNode
func (*LinkList) InsertAfter ¶
func (ll *LinkList) InsertAfter(value int, pos *LinkListNode)
type LinkListNode ¶
type LinkListNode struct {
// contains filtered or unexported fields
}
func ReverseLinkList ¶
func ReverseLinkList(head *LinkListNode) *LinkListNode
ReverseLinkList 原地反转链表 新建一个返回链表,next指向原链表头 每次循环:原链头所指向的元素移动到返回链头,并指向上次循环的返回链头
func (*LinkListNode) IsEqual ¶
func (node *LinkListNode) IsEqual(target *LinkListNode) bool
type List ¶
type List struct {
// contains filtered or unexported fields
}
List 链表结构,首尾相连
func (*List) InsertAfter ¶
func (l *List) InsertAfter(v interface{}, pos *ListElement) *ListElement
InsertAfter 插入到指定位置之前
func (*List) InsertBefore ¶
func (l *List) InsertBefore(v interface{}, pos *ListElement) *ListElement
InsertBefore 插入到指定位置之前
type ListElement ¶
type ListElement struct { Value interface{} // contains filtered or unexported fields }
ListElement 链表节点,list指向链表
type ListNode ¶
ListNode 单链表
func MergeKLists ¶
MergeKLists 合并k个有序链表 1. 采用小根堆存储每个链表的队头,每次从小根堆头部取节点加入返回链表中,并将该节点的Next放回小根堆中 2. 也可以使用分治法,将链表按照两两划分合并,然后递归合并到只剩一个链表
Click to show internal directories.
Click to hide internal directories.