golang2021数据格式(72)Golangcontai
container的结构如下
可以看出包含三部分:heap,list和ring。下面分别介绍
1。heap
heap即为堆,是一种常用的数据结构,在源码里面,提供了接口,在实际使用时需要实现。
下面是一个关于heap使用的实例。
代码:
packagemain
import(
fmt
containerheap
)
heap提供了接口,需要自己实现如下方法
typeHeap〔〕int
构造的是小顶堆,大顶堆只需要改一下下面的符号
func(hHeap)Less(i,jint)bool{
return(h)〔i〕(h)〔j〕
}
func(hHeap)Swap(i,jint){
(h)〔i〕,(h)〔j〕(h)〔j〕,(h)〔i〕
}
func(hHeap)Len()int{
returnlen(h)
}
func(hHeap)Pop()interface{}{
x:(h)〔h。Len()1〕
h(h)〔:h。Len()1〕
returnx
}
func(hHeap)Push(xinterface{}){
happend(h,x。(int))
}
func(hHeap)Remove(idxint)interface{}{
h。Swap(idx,h。Len()1)
returnh。Pop()
}
funcmain(){
创建一个heap
h:Heap{}
heap。Init(h)
向heap中插入元素
h。Push(5)
h。Push(2)
h。Push(1)
h。Push(8)
h。Push(4)
h。Push(6)
h。Push(2)
输出heap中的元素,相当于一个数组,原始数组
fmt。Println(h)
这里必须要reheapify,建立好堆了
heap。Init(h)
小顶堆对应的元素在数组中的位置
fmt。Println(h)
移除下标为5的元素,下标从0开始
h。Remove(5)
按照堆的形式输出
forh。Len()0{
fmt。Printf(d,heap。Pop(h))
}
fmt。Println()
}
2。list
list类型是双向链表,具体用法如下
代码:
packagemain
import(
fmt
containerlist
)
funcmain(){
创建一个双向链表
ls:list。New()
向双向链表中插入26个小写字母
fori:97;i123;i{
ls。PushFront(i)PushFront()代表从头部插入,同样PushBack()代表从尾部插入
}
遍历双向链表ls中的所有字母
forit:ls。Front();it!nil;itit。Next(){
fmt。Printf(c,it。Value)
}
fmt。Println()
}
3。ring
ring是一个环形链表,具体用法可以参考如下代码
代码:
packagemain
import(
fmt
containerring闭环包引入,详见usrlocalgosrcpkgcontainerring
)
funcmain(){
创建10个元素的闭环
r:ring。New(10)
给闭环中的元素赋值
fori:1;ir。Len();i{
r。Valuei
rr。Next()
}
循环打印闭环中的元素值
r。Do(
func(pinterface{}){
println(p)
})
获得当前元素之后的第5个元素
r5:r。Move(5)
fmt。Println(r5)
fmt。Println(r)
链接当前元素r与r5,相当于删除了r与r5之间的元素
r1:r。Link(r5)
fmt。Println(r1)
fmt。Println(r)
}
苹果手机6s老机型升级15。3。1开始也是在网上看了很多帖子关于升级问题,也在担心老机型升级后的卡顿问题和电池续航问题!犹豫了很久还是升级了,升级后的体验变得很丝滑,反应也很快,尤其是屏幕点击灵敏度很高,是之前……
郜永华运营现场如何讲好一个融资的好故事?融资本身就是讲好一个关于资本的故事。而能讲故事的人举不胜数,能把一个故事讲好的人,在我有限的世界里,用手指头都能算得过来。当今最火的几个人,在互联网界,怕是如下列位:马云、乔布……
各位有没有3000元以下的手机推荐?感谢您的阅读!各位有没有3000元以下的手机推荐。12256G的?在这个价位,到底什么样的价格,才适合我们能消费者呢?实际上在3000元以下的手机,我觉得其实已经非……
强得很了不得,你能发现苹果文案中的乾坤吗?每年苹果秋季发布会,最让三口感兴趣的,不是手机又有哪些新突破,也不是苹果又开发了什么新功能,而是苹果又为新品想了什么鬼畜文案。毫无疑问,今年苹果的产品文案仍然没有让我失望……
公司如何才能做好网站建设?随着时代的不断发展,用户对于互联网的要求也越来越高,现在一般的网站已经无法满足用户的需求了,用户更喜欢浏览一些突出个性化的网站,那么,如何建设一个风格迥异的网站呢?一起来了解一……
涉及个税医疗外卖3月起,这些新规将落地实施一批新规将正式落地实施一起看看,哪些与你息息相关全国新规四部门:不得利用算法对消费者实施不合理价格差别待遇国家网信办等四部门联合发布《互联网信息服务算法……
为什么现在好多地方的网络信号满格,网速却很卡?连网页都打不开为什么现在好多地方的网络信号满格,网速却很卡?我相信这个问题可能大多数的用户都是遇到类似的,有时候手机的信号总是满满的,却网速非常的慢,有时候连个网页也是打不开的,那么这里面究……
荣耀8X系统还能升级吗?感谢您的阅读!这是很经典的荣耀手机。荣耀8X的参数,我们可以看看这款手机采用的是6。5英寸的屏幕,手机采用窄边框,全面屏。当然可能会有人觉得刘海屏的设计并不能……
手机恢复出厂设置真的跟新机一样?别再被坑,看完这3点就懂了!大家都知道我们的手机一般分为两个手机系统,一个是安卓系统,一个就是苹果手机独立使用的ios系统,而安卓的系统又是公认的没有ios系统流畅,虽说现在这样的差距已经缩小了不少,但是……
日食后会发生什么现象?日食后会发生什么现象?站在科学角度来讲,主要天灾,人祸等两个方面的影响,当然我们首先也要强调日食属于正常的天文奇观,但是不见得完全对地球生物无影响,所以我说往往会出现两个……
荣耀V40轻奢版亮相天玑800U加持荣耀品牌自从从华为独立之后,仅在今年的1月份带来了一款手机荣耀V40,虽然这款手机市场反馈目前还不错,但大家期盼的肯定是更多的新机。今天有博主带来了爆料信息,荣耀的新机来……
为什么说丰田BZ4X概念车是个大招?上海车展现场嘴上不愿意,身体很诚实。我有点想把这句话送给今年上海车展的丰田BZ4X概念车。因为丰田的社长丰田章男先生刚刚还在日本汽车制造商协会年终发布会上炮轰电动车,反手在几个……