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