前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言情怀-第53期 Go 语言标准库翻译 compress/ring

Golang语言情怀-第53期 Go 语言标准库翻译 compress/ring

作者头像
李海彬
发布2021-03-09 11:01:53
3050
发布2021-03-09 11:01:53
举报
文章被收录于专栏:Golang语言社区

import "container/ring"

ring实现了环形链表的操作。

代码语言:javascript
复制
type Ring
func New(n int) *Ring
func (r *Ring) Len() int
func (r *Ring) Next() *Ring
func (r *Ring) Prev() *Ring
func (r *Ring) Move(n int) *Ring
func (r *Ring) Link(s *Ring) *Ring
func (r *Ring) Unlink(n int) *Ring
func (r *Ring) Do(f func(interface{}))

type Ring

代码语言:javascript
复制
type Ring struct {
    Value interface{} // 供调用者使用,本包不会操作该字段
    // 包含隐藏或非导出字段
}

Ring类型代表环形链表的一个元素,同时也代表链表本身。环形链表没有头尾;指向环形链表任一元素的指针都可以作为整个环形链表看待。Ring零值是具有一个(Value字段为nil的)元素的链表。

func New
代码语言:javascript
复制
func New(n int) *Ring

New创建一个具有n个元素的环形链表。

func (*Ring) Len
代码语言:javascript
复制
func (r *Ring) Len() int

Len返回环形链表中的元素个数,复杂度O(n)。

func (*Ring) Next
代码语言:javascript
复制
func (r *Ring) Next() *Ring

返回后一个元素,r不能为空。

func (*Ring) Prev
代码语言:javascript
复制
func (r *Ring) Prev() *Ring

返回前一个元素,r不能为空。

func (*Ring) Move
代码语言:javascript
复制
func (r *Ring) Move(n int) *Ring

返回移动n个位置(n>=0向前移动,n<0向后移动)后的元素,r不能为空。

func (*Ring) Link
代码语言:javascript
复制
func (r *Ring) Link(s *Ring) *Ring

Link连接r和s,并返回r原本的后继元素r.Next()。r不能为空。

如果r和s指向同一个环形链表,则会删除掉r和s之间的元素,删掉的元素构成一个子链表,返回指向该子链表的指针(r的原后继元素);如果没有删除元素,则仍然返回r的原后继元素,而不是nil。如果r和s指向不同的链表,将创建一个单独的链表,将s指向的链表插入r后面,返回s原最后一个元素后面的元素(即r的原后继元素)。

func (*Ring) Unlink
代码语言:javascript
复制
func (r *Ring) Unlink(n int) *Ring

删除链表中n % r.Len()个元素,从r.Next()开始删除。如果n % r.Len() == 0,不修改r。返回删除的元素构成的链表,r不能为空。

func (*Ring) Do
代码语言:javascript
复制
func (r *Ring) Do(f func(interface{}))

对链表的每一个元素都执行f(正向顺序),注意如果f改变了*r,Do的行为是未定义的。


参考资料:

Go语言中文文档

http://www.golang.ltd/

Go语言官方文档

https://golang.google.cn/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言情怀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • type Ring
    • func New
      • func (*Ring) Len
        • func (*Ring) Next
          • func (*Ring) Prev
            • func (*Ring) Move
              • func (*Ring) Link
                • func (*Ring) Unlink
                  • func (*Ring) Do
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档