This is a creation in Article, where the information may have evolved or changed.
The implementation of the chain storage structure of the queue
Queue-chained storage structure
Typelsqueuestruct{
Front *lsqnode //head pointer
Rear *lsqnode// tail hands
The linear length of the count int//queue
}
Queue Chain Storage Fabric Node
Typelsqnodestruct{
Elem elemtype// stored data
Next *lsqnode//pointer to the next node
Lsqueue *lsqueue //Affiliation queue
}
Initialize Queue
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
return lsqueue
}
inserting elements
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++
return node
}
Delete Element
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
}
Determine if the queue is empty
Func(lsqueue*lsqueue)emptyqueue ()bool{
If Lsqueue.front = = Lsqueue.rear{
return True
}
return false
}
Empty queue
Func(lsqueue*lsqueue)clearlsqueue (){
If Lsqueue.emptyqueue ( ) {
return
}
lsqueue.front = lsqueue.rear
lsqueue.count = 0
}
Get Queue linear length
Func(lsqueue*lsqueue)lsqueuelength ()int{
If Lsqueue.emptyqueue ( ) {
return 0
}
return lsqueue.count
}
Import(
"testing"
)
varlsqueue*lsqueue
Funcinit (){
Lsqueue = initlsqueue ()
}
Functestinsertlsqueueelem (t*testing. T){
_= Lsqueue.insertlsqueueelem ("one")
}
Functestdeletelsqueueelem (t*testing. T){
_= Lsqueue.deletelsqueueelem ( )
}