資料結構-隊列鏈式儲存結構的實現(golang)

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
//隊列的鏈式儲存結構的實現
//隊列鏈式儲存結構體
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()
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.