• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

GO语言队列实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。

队列是一种先进先出的t(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是q=(a1,a2,……,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而插入时,总是在队列最后。这也比较符合我们通常生活中的习惯,排在第一个的优先出列,最后来的当然排在队伍最后。如下图:

 

package main

import (
	"fmt"
)

type QueueNode struct {
	Data interface{}
	Next *QueueNode
}

//创建链列(数据)
func (queue *QueueNode) Create(Data ...interface{}) {
	if queue == nil {
		return
	}
	if len(Data) == 0 {
		return
	}

	//创建链列
	for _, v := range Data {
		newNode := new(QueueNode)
		newNode.Data = v

		queue.Next = newNode
		queue = queue.Next
	}

}

//打印链列
func (queue *QueueNode) Print() {
	if queue == nil {
		return
	}
	for queue != nil {
		if queue.Data != nil {
			fmt.Print(queue.Data, " ")
		}
		queue = queue.Next
	}
	fmt.Println()
}

//链列个数
func (queue *QueueNode) Length() int {
	if queue == nil {
		return -1
	}

	i := 0
	for queue.Next != nil {
		i++
		queue = queue.Next
	}
	return i
}

//入列(insert)
func (queue *QueueNode) Push(Data interface{}) {
	//放在队列的末尾

	if queue == nil {
		return
	}
	if Data == nil {
		return
	}

	//找到队列末尾
	for queue.Next != nil {
		queue = queue.Next
	}

	//创建新节点 将新节点加入队列末尾
	newNode := new(QueueNode)
	newNode.Data = Data

	queue.Next = newNode
}

//出队(delete)
func (queue *QueueNode) Pop() {
	//队头出列
	if queue == nil {
		return
	}
	//记录列队第一个的节点
	//node:=queue.Next
	//queue.Next=node.Next

	queue.Next = queue.Next.Next
}
 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ubuntu安装go语言发布时间:2022-07-10
下一篇:
AwesomeGo(http://awesome-go.com/)发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap