首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

容器数据结构list | container/list

  • import "container/list"
  • 概况
  • 索引
  • 例子

概述

软件包列表实现双向链接列表。

遍历一个列表(其中 l 是 *List):

代码语言:txt
复制
for e := l.Front(); e != nil; e = e.Next() {
	// 用e.Value做些事情
}

示例

代码语言:txt
复制
package main

import (
	"container/list"
	"fmt"
)

func main() {
	// 创建一个新列表并在其中添加一些数字。
	l := list.New()
	e4 := l.PushBack(4)
	e1 := l.PushFront(1)
	l.InsertBefore(3, e4)
	l.InsertAfter(2, e1)

	// 遍历列表并打印其内容。
	for e := l.Front(); e != nil; e = e.Next() {
		fmt.Println(e.Value)
	}

}

索引

type Element

  • func (e *Element) Next() *Element
  • func (e *Element) Prev() *Element

type List

  • func New() *List
  • func (l *List) Back() *Element
  • func (l *List) Front() *Element
  • func (l *List) Init() *List
  • func (l *List) InsertAfter(v interface{}, mark *Element) *Element
  • func (l *List) InsertBefore(v interface{}, mark *Element) *Element
  • func (l *List) Len() int
  • func (l *List) MoveAfter(e, mark *Element)
  • func (l *List) MoveBefore(e, mark *Element)
  • func (l *List) MoveToBack(e *Element)
  • func (l *List) MoveToFront(e *Element)
  • func (l *List) PushBack(v interface{}) *Element
  • func (l *List) PushBackList(other *List)
  • func (l *List) PushFront(v interface{}) *Element
  • func (l *List) PushFrontList(other *List)
  • func (l *List) Remove(e *Element) interface{}

示例

包文件

包文件

元素是链接列表的元素。

代码语言:txt
复制
type Element struct {

        // 与此元素一起存储的值。
        Value interface{}
        // 包含过滤或未导出的字段
}

func (*Element) Next(查看源代码)

代码语言:javascript
复制
func (e *Element) Next() *Element

接下来返回下一个列表元素或空值 nil 。

func (*Element) Prev(查看源代码)

代码语言:javascript
复制
func (e *Element) Prev() *Element

Prev 返回前一个列表元素或 空值nil 。

列表代表一个双向链表。列表的零值是准备使用的空列表。

代码语言:txt
复制
type List struct {
        // 包含过滤或未导出的字段
}
代码语言:javascript
复制
func New() *List

重新返回一个初始化列表。

func (*List) Back(查看源代码)

代码语言:javascript
复制
func (l *List) Back() *Element

返回列表的最后一个元素或空值 nil。

func (*List) Front(查看源代码)

代码语言:javascript
复制
func (l *List) Front() *Element

Front 返回列表的第一个元素或空值nil 。

func (*List) Init(查看源代码)

代码语言:javascript
复制
func (l *List) Init() *List

Init 初始化或清除列表 l 。

func (*List) InsertAfter(查看源代码)

代码语言:javascript
复制
func (l *List) InsertAfter(v interface{}, mark *Element) *Element

InsertAfter 在标记后立即插入具有值 v 的新元素 e 并返回 e。如果标记不是 l 的元素,则列表不会被修改。

func (*List) InsertBefore(查看源代码)

代码语言:javascript
复制
func (l *List) InsertBefore(v interface{}, mark *Element) *Element

InsertBefore 在标记之前立即插入一个具有值 v 的新元素 e 并返回 e 。如果标记不是 l 的元素,则列表不会被修改。

func (*List) Len(查看源代码)

代码语言:javascript
复制
func (l *List) Len() int

Len 返回列表 l 的元素数量。复杂性是 O(1)。

func (*List) MoveAfter(查看源代码)

代码语言:javascript
复制
func (l *List) MoveAfter(e, mark *Element)

MoveAfter 将元素 e 移动到标记后的新位置。如果 e 或标记不是 l 或 e ==标记的元素,则列表不会被修改。

func (*List) MoveBefore(查看源代码)

代码语言:javascript
复制
func (l *List) MoveBefore(e, mark *Element)

MoveBefore 在标记之前将元素 e 移动到新的位置。如果 e 或标记不是 l 或 e ==标记的元素,则列表不会被修改。

func (*List) MoveToBack(查看源代码)

代码语言:javascript
复制
func (l *List) MoveToBack(e *Element)

MoveToBack 将元素 e 移动到列表l的后面。如果 e 不是 l 的元素,则列表不会被修改。

func (*List) MoveToFront(查看源代码)

代码语言:javascript
复制
func (l *List) MoveToFront(e *Element)

MoveToFront 将元素 e 移动到列表l的前面。如果 e 不是 l 的元素,则列表不会被修改。

func (*List) PushBack(查看源代码)

代码语言:javascript
复制
func (l *List) PushBack(v interface{}) *Element

PushBack 在列表 l 的后面插入一个新值 e 的元素 e 并返回 e 。

func (*List) PushBackList(查看源代码)

代码语言:javascript
复制
func (l *List) PushBackList(other *List)

PushBackList 在列表 l 的后面插入其他列表的副本。列表 l 和其他可能是相同的。

func (*List) PushFront(查看源代码)

代码语言:javascript
复制
func (l *List) PushFront(v interface{}) *Element

PushFront 在列表 l 的前面插入一个新的元素 e,其值为 v,并返回 e 。

func (*List) PushFrontList(查看源代码)

代码语言:javascript
复制
func (l *List) PushFrontList(other *List)

PushFrontList 在列表 l 的前面插入其他列表的副本。列表 l 和其他可能是相同的。

func (*List) Remove(查看源代码)

代码语言:javascript
复制
func (l *List) Remove(e *Element) interface{}

如果 e 是列表 l 的一个元素,则删除从 e 删除 e 。它返回元素值 e.Value 。

扫码关注腾讯云开发者

领取腾讯云代金券