Go语言的列表(list)

列表(list)--可以快速增删的非连续空间的容器

列表是一种非连续存储的容器,由多个节点组成,节点通过一些变量记录彼此之间的关系。列表有多种实现方法,如单链表、双链表等。

在Go语言中,将列表使用container/list包来实现,内部的实现原理是双链表。列表能够高效地进行任意位置的元素插入和删除操作。

一、初始化列表

1、通过container/list包的New方法初始化list

变量名:=list.New()

2、通过声明初始化list

var 变量名 list.List

二、在列表中插入元素

双链表支持从队列前方或后方插入元素,分别对应的方法是PushFront和PushBack。

下面代码显示 如何给list添加元素:

l:=list.New()

l.PushBack("first")

l.PushFront(67)

列表插入元素的方法
方法功能
InsertAfter(v interface{}, makr *Element) *Element在mark点之后插入元素,mark点由其他插入函数提供
InsertBefore( v interface{}, make *Element) *Element在mark点之前插入元素,mark点由其他插入函数提供
PushBackList(other *List)添加other列表元素到尾部
PushFrontList(other *List)添加other列表元素到头部

三、从列表中删除元素

代码如下:

package main

import (
	"container/list"
)

func main() {
	l := list.New()
	//尾部添加
	l.PushBack("canon")
	//头部添加
	l.PushFront(67)
	//尾部添加后保存元素句柄
	element := l.PushBack("first")
	//在first之后添加high
	l.InsertAfter("high", element)
	//在first之前添加noon
	l.InsertBefore("noon", element)
	//使用
	l.Remove(element)
}

列表元素操作的过程
操作内容列表元素
l.PushBack("canon")canon
l.PushFront(67)67,canon
element:=l.PushBack("fist")67,canon,fist
l.InsertAfter("high",element)67,canon,fist,high
l.InsertBefore("noon",element)67,canon,noon,fist,high
l.Remove(element)67,canon,noon,high

四、遍历列表--访问列表的每一个元素。

代码如下:

package main

import (
	"container/list"
	"fmt"
)

func main() {
	l := list.New()
	//尾部添加
	l.PushBack("canon")
	//头部添加
	l.PushFront(67)

	for i := l.Front(); i != nil; i = i.Next() {
		fmt.Println(i.Value)
	}
}

运行结果如下:

67
canon

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值