社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
目录
Golang标准库container/list
是一个双向链表实现。这个代码包中有两个结构体——List和Element,List表示一个双向链表,而 Element 则代表了链表中元素的结构。
func (l *List) MoveBefore(e, mark *Element) // 向前移动
func (l *List) MoveAfter(e, mark *Element) // 先后移动
func (l *List) MoveToFront(e *Element) // 移到头部
func (l *List) MoveToBack(e *Element) // 移到尾部
func (l *List) Front() *Element
func (l *List) Back() *Element
func (l *List) InsertBefore(v interface{}, mark *Element) *Element
func (l *List) InsertAfter(v interface{}, mark *Element) *Element
func (l *List) PushFront(v interface{}) *Element
func (l *List) PushBack(v interface{}) *Element
Front和Back方法分别用于获取链表中最前端和最后端的元素,
InsertBefore和InsertAfter方法分别用于在指定的元素之前和之后插入新元素,
PushFront和PushBack方法则分别用于在链表的最前端和最后端插入新元素。
package main
import (
"container/list"
"fmt"
)
func Loop(list *list.List) {
for e := list.Front(); e != nil; e = e.Next() {
fmt.Printf("e.Value: %v\n", e.Value)
}
}
func Remove(e1 string, list *list.List) {
for e := list.Front(); e != nil; e = e.Next() {
if (e.Value).(string) == e1 {
list.Remove(e)
break
}
}
}
func main() {
linkedlist := list.New()
// 尾部添加
linkedlist.PushBack("java")
linkedlist.PushBack("python")
linkedlist.PushBack("golang")
// 遍历
Loop(linkedlist)
// 删除
Remove("java", linkedlist)
fmt.Println("------------")
// 遍历
Loop(linkedlist)
}
输出:
e.Value: java
e.Value: python
e.Value: golang
------------
e.Value: python
e.Value: golang
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!