分享
数据结构-队列链式存储结构的实现(golang)
卑微了承诺-life · · 2323 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
//队列的链式存储结构的实现
//队列链式存储结构体
typeLSQueuestruct{
front*LSQNode//头指针
rear*LSQNode//尾指针
countint//队列的线性长度
}
//队列链式存储结构节点
typeLSQNodestruct{
elemElemType//储存的数据
next*LSQNode//指向下一个节点的指针
lsQueue*LSQueue//所属队列
}
//初始化队列
funcInitLSQueue()*LSQueue{
lsQueue:=new(LSQueue)
node:=new(LSQNode)
node.elem=nil
node.next=nil
node.lsQueue=lsQueue
lsQueue.front=node
lsQueue.rear=node
lsQueue.count=0
returnlsQueue
}
//插入元素
func(lsQueue*LSQueue)InsertLSQueueElem(elemElemType)*LSQNode{
node:=new(LSQNode)
node.elem=elem
node.next=nil
node.lsQueue=lsQueue
lsQueue.rear.next=node
lsQueue.rear=node
lsQueue.count++
returnnode
}
//删除元素
func(lsQueue*LSQueue)DeleteLSQueueElem()*LSQNode{
iflsQueue.EmptyQueue(){
returnnil
}
node:=lsQueue.front.next
lsQueue.front.next=node.next
lsQueue.count--
ifnode==lsQueue.rear{
lsQueue.front=lsQueue.rear
}
returnnode
}
//判断队列是否为空
func(lsQueue*LSQueue)EmptyQueue()bool{
iflsQueue.front==lsQueue.rear{
returntrue
}
returnfalse
}
//清空队列
func(lsQueue*LSQueue)ClearLSQueue(){
iflsQueue.EmptyQueue(){
return
}
lsQueue.front=lsQueue.rear
lsQueue.count=0
}
//获取队列线性长度
func(lsQueue*LSQueue)LSQueueLength()int{
iflsQueue.EmptyQueue(){
return0
}
returnlsQueue.count
}
import(
"testing"
)
varlsQueue*LSQueue
funcinit(){
lsQueue=InitLSQueue()
}
funcTestInsertLSQueueElem(t*testing.T){
_=lsQueue.InsertLSQueueElem("ONE")
}
funcTestDeleteLSQueueElem(t*testing.T){
_=lsQueue.DeleteLSQueueElem()
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2323 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
//队列的链式存储结构的实现
//队列链式存储结构体
typeLSQueuestruct{
front*LSQNode//头指针
rear*LSQNode//尾指针
countint//队列的线性长度
}
//队列链式存储结构节点
typeLSQNodestruct{
elemElemType//储存的数据
next*LSQNode//指向下一个节点的指针
lsQueue*LSQueue//所属队列
}
//初始化队列
funcInitLSQueue()*LSQueue{
lsQueue:=new(LSQueue)
node:=new(LSQNode)
node.elem=nil
node.next=nil
node.lsQueue=lsQueue
lsQueue.front=node
lsQueue.rear=node
lsQueue.count=0
returnlsQueue
}
//插入元素
func(lsQueue*LSQueue)InsertLSQueueElem(elemElemType)*LSQNode{
node:=new(LSQNode)
node.elem=elem
node.next=nil
node.lsQueue=lsQueue
lsQueue.rear.next=node
lsQueue.rear=node
lsQueue.count++
returnnode
}
//删除元素
func(lsQueue*LSQueue)DeleteLSQueueElem()*LSQNode{
iflsQueue.EmptyQueue(){
returnnil
}
node:=lsQueue.front.next
lsQueue.front.next=node.next
lsQueue.count--
ifnode==lsQueue.rear{
lsQueue.front=lsQueue.rear
}
returnnode
}
//判断队列是否为空
func(lsQueue*LSQueue)EmptyQueue()bool{
iflsQueue.front==lsQueue.rear{
returntrue
}
returnfalse
}
//清空队列
func(lsQueue*LSQueue)ClearLSQueue(){
iflsQueue.EmptyQueue(){
return
}
lsQueue.front=lsQueue.rear
lsQueue.count=0
}
//获取队列线性长度
func(lsQueue*LSQueue)LSQueueLength()int{
iflsQueue.EmptyQueue(){
return0
}
returnlsQueue.count
}
import(
"testing"
)
varlsQueue*LSQueue
funcinit(){
lsQueue=InitLSQueue()
}
funcTestInsertLSQueueElem(t*testing.T){
_=lsQueue.InsertLSQueueElem("ONE")
}
funcTestDeleteLSQueueElem(t*testing.T){
_=lsQueue.DeleteLSQueueElem()
}