A simple implementation of a linked list of queues

package main

import "fmt"

type Queue struct {
	id int
	name string
	next *Queue
}

//Push
func Push(head, node *Queue){
	node.next = head.next
	head.next = node
}

//Pop
func Pop(head *Queue) (node *Queue){
	temp := head
	for {
		if temp.next == nil{
			return
		}else if temp.next.next == nil{
			node = temp.next
			temp.next = nil
			break
		}
		temp = temp.next
	}
	return
}

//List
func QList(head *Queue){
	temp := head
	if temp.next == nil{
		fmt.Println("Queue empty")
		return
	}
	for {
		fmt.Printf("| %d %s | ", temp.next.id, temp.next.name)
		temp = temp.next
		if temp.next == nil{
			break}}}func main(a){
	head := &Queue{}
	node1 := &Queue{
		id:   0,
		name: "number1",
		next: nil,
	}
	node2 := &Queue{
		id : 1,
		name: "number2",
		next: nil,
	}
	Push(head, node1)
	Push(head, node2)
	QList(head)
	fmt.Println()
	p := Pop(head)
	fmt.Printf("%d %s\n",p.id, p.name)
	QList(head)
}
Copy the code