数据结构-队列链式存储结构的实现(golang)

卑微了承诺-life · · 1661 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

//队列的链式存储结构的实现
//队列链式存储结构体
type LSQueue struct {
    front *LSQNode //头指针
    rear  *LSQNode //尾指针
    count int      //队列的线性长度
}

//队列链式存储结构节点
type LSQNode struct {
    elem    ElemType //储存的数据
    next    *LSQNode //指向下一个节点的指针
    lsQueue *LSQueue //所属队列
}

//初始化队列
func InitLSQueue() *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
    return lsQueue
}

//插入元素
func (lsQueue *LSQueue) InsertLSQueueElem(elem ElemType) *LSQNode {
    node := new(LSQNode)
    node.elem = elem
    node.next = nil
    node.lsQueue = lsQueue
    lsQueue.rear.next = node
    lsQueue.rear = node
    lsQueue.count++
    return node
}

//删除元素
func (lsQueue *LSQueue) DeleteLSQueueElem() *LSQNode {
    if lsQueue.EmptyQueue() {
        return nil
    }
    node := lsQueue.front.next
    lsQueue.front.next = node.next
    lsQueue.count--

    if node == lsQueue.rear {
        lsQueue.front = lsQueue.rear
    }
    return node
}

//判断队列是否为空
func (lsQueue *LSQueue) EmptyQueue() bool {
    if lsQueue.front == lsQueue.rear {
        return true
    }
    return false
}

//清空队列
func (lsQueue *LSQueue) ClearLSQueue() {
    if lsQueue.EmptyQueue() {
        return
    }
    lsQueue.front = lsQueue.rear
    lsQueue.count = 0
}

//获取队列线性长度
func (lsQueue *LSQueue) LSQueueLength() int {
    if lsQueue.EmptyQueue() {
        return 0
    }
    return lsQueue.count
}

import (
    "testing"
)

var lsQueue *LSQueue

func init() {
    lsQueue = InitLSQueue()
}

func TestInsertLSQueueElem(t *testing.T) {
    _= lsQueue.InsertLSQueueElem("ONE")
    
}

func TestDeleteLSQueueElem(t *testing.T) {
    _= lsQueue.DeleteLSQueueElem()
}


有疑问加站长微信联系(非本文作者)

本文来自:新浪博客

感谢作者:卑微了承诺-life

查看原文:数据结构-队列链式存储结构的实现(golang)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1661 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传