当前位置: 首页 > news >正文

魔方 网站苏州网站制作开发公司

魔方 网站,苏州网站制作开发公司,wordpress精简,七牛云最新消息MyHeap#xff1a;container/heap的数据载体#xff0c;需要实现以下方法#xff1a; Len#xff1a;堆中数据个数 Less#xff1a;第i个元素 是否必 第j个元素 值小 Swap#xff1a;交换第i个元素和 第j个元素 Push#xff1a;向堆中追加元素 Pop#xff1a;从堆…MyHeapcontainer/heap的数据载体需要实现以下方法 Len堆中数据个数 Less第i个元素 是否必 第j个元素 值小 Swap交换第i个元素和 第j个元素 Push向堆中追加元素 Pop从堆中取出元素 下面是使用双向链路作为数据载体的最小堆实现方式 package mainimport (container/heapfmt )type HeapItem struct {Value intPrev *HeapItemNext *HeapItem }type MyHeap struct {Head *HeapItemTail *HeapItemLength int }func (h *MyHeap) Len() int {return h.Length }func (h *MyHeap) Less(i, j int) bool {return h.Find(i).Value h.Find(j).Value }func (h *MyHeap) Swap(i, j int) {nodeI, nodeJ : h.Find(i), h.Find(j)isNear : h.IsNear(nodeI, nodeJ)// 记录I的前和后nodeIPrev, nodeINext : nodeI.Prev, nodeI.Next// 记录J的前和后nodeJPrev, nodeJNext : nodeJ.Prev, nodeJ.Next// 把J放到I的位置nodeIPrev.Next nodeJnodeJ.Prev nodeIPrevnodeJ.Next nodeINext // near, 对于相邻元素, 这样操作有问题, 下面会重新赋值nodeINext.Prev nodeJ // near, 对于相邻元素, 这样操作有问题, 下面会重新赋值// 把I放到J的位置nodeJPrev.Next nodeI // near, 对于相邻元素, 这样操作有问题, 下面会重新赋值nodeI.Prev nodeJPrev // near, 对于相邻元素, 这样操作有问题, 下面会重新赋值nodeI.Next nodeJNextnodeJNext.Prev nodeI// 对于相邻元素重新赋值if isNear {nodeJ.Next nodeInodeINext.Prev nodeIPrevnodeJPrev.Next nodeJNextnodeI.Prev nodeJ} }func (h *MyHeap) Push(v interface{}) {newItem : v.(*HeapItem)temp : h.Tail.Prevtemp.Next newItemnewItem.Prev tempnewItem.Next h.Tailh.Tail.Prev newItemh.Lengthreturn }func (h *MyHeap) Pop() interface{} {realTailNode : h.Tail.PrevrealTailNode.Prev.Next realTailNode.NextrealTailNode.Next.Prev realTailNode.Prevh.Length--return realTailNode }func (h *MyHeap) IsNear(nodeI, nodeJ *HeapItem) bool {if nodeI.Next nodeJ {return true}return false }func (h *MyHeap) Find(i int) *HeapItem {nodeI : h.Headfor k : 0; k i; k {nodeI nodeI.Next}return nodeI }func (h *MyHeap) Show() {forward : backward : i : 0for curr : h.Head; curr ! nil i 10; curr curr.Next {forward fmt.Sprintf(%d-, curr.Value)i}j : 0for curr : h.Tail; curr ! nil j 10; curr curr.Prev {backward fmt.Sprintf(%d-, curr.Value) backwardj}fmt.Printf(forward%s, backward%s\n, forward, backward) }func InitHeap() *MyHeap {head : HeapItem{Value: -1}tail : HeapItem{Value: -2}head.Next tailtail.Prev headreturn MyHeap{Head: head,Tail: tail,Length: 0,} }func main() {myHeap : InitHeap()heap.Init(myHeap)heap.Push(myHeap, HeapItem{Value: 10})heap.Push(myHeap, HeapItem{Value: 1000})heap.Push(myHeap, HeapItem{Value: 5})heap.Push(myHeap, HeapItem{Value: 1})heap.Push(myHeap, HeapItem{Value: 7})myHeap.Show()for myHeap.Len() 0 {item : heap.Pop(myHeap).(*HeapItem)fmt.Printf(%d , item.Value)}fmt.Println() }
http://www.hkea.cn/news/14532032/

相关文章:

  • 网站建设珠江摩尔王占山事迹
  • 吉林平台网站建设多少钱用jsp做网站的难点
  • 电子商务网站建设管理答案网站开通告知书
  • 网站开发有哪几种语言国外ps网站
  • 正规网站建设咨询电话wordpress个人展示
  • 新手做网站教程青岛建设集团建兴工程有限公司
  • 网站建设是怎么赚钱营销网站的成功案例
  • 网站的视频做gifwordpress 做值班表
  • 黑龙江建设网站网页网页设计班
  • 丹阳网站设计建设银行河北招聘网站
  • 如何做公司网站wordpress ftp设置
  • 个人备案网站做淘宝客可以用吗企业网站建设申请怎么写
  • 请问下网站开发怎么弄没有icp备案的ip地址访问的网站会被各搜索引擎收录吗
  • 兼职网站高中生在家可做传奇怎么做网站
  • 网站开发手册网站模块功能
  • php wordpress 配置成都排名seo公司
  • 内网建站教程wordpress会员等级
  • 东莞网站公司建设网站中国防疫政策马上要变化了
  • 上海市虹口市容建设公司网站迁安网站建设
  • 网页设计与网站建设pdf环保主题的网站模板
  • 嘉定网站网站建设做网站运营公司收费
  • 个人网站模板下载自己做的公司网站百度搜不到
  • 360网站怎么做链接做网站需要什么框架
  • 单页营销型网站建设wordpress下载类模板下载
  • 做电影ppt模板下载网站网站和网页的设计原则
  • 表单大师做网站网站开发报价单明细
  • 做一个谷歌网站多少钱金蝶官网首页
  • js特效演示网站wordpress开启2级域名
  • 昆明著名网站建设信息技术制作网站
  • 网站引导页作用网络应用程序方案设计