Quick actions

cmd+k|ctrl+k

Navigation

Languages

go queue

Snippet info

Language

Go

Visibility

public

Author

haikel.fazzani

Created

2023-09-10T23:40:10.911848Z

Updated

2023-09-10T23:40:10.911848Z

package main

import (
    "fmt"
)

type Node struct {
    Value interface{}
    next *Node
}

func NewNode(value interface{}) *Node {
    return &Node{Value:value, next: nil}   
}

type Queue struct {
    first *Node
    last *Node
    length int
}

func (q *Queue) peek() *Node {
    return q.first
}

func (q *Queue) enqueue(value interface{}) {
    newNode := NewNode(value)
    if q.length == 0 {
        q.first = newNode
        q.last = newNode
    } else {
        q.last.next = newNode
        q.last = newNode
    }
    q.length++
    
    q.print()
}

func (q *Queue) print() {
    fmt.Printf("queue length is %d and elements in are..\n", q.length)
	node := q.first
	for node != nil {
		fmt.Printf("%s ", node.Value)
		node = node.next
	}
	fmt.Println()
}
func (q *Queue) dqueue() interface{} {
    if q.first == nil {
        return nil
    }
    
    val := q.first.Value
    q.first = q.first.next
    q.length--
    return val
}

func (q *Queue) isempty() bool {
    if q.length > 0 {
        return true
    }
    
    return false
}

func main() {
    q := Queue{}
    fmt.Println(q.peek())
    q.enqueue("Apple")
    q.enqueue("Banana")
    q.enqueue("Orange")
    
    fmt.Println ("element dqueue is : ", q.dqueue())
    fmt.Println ("element dqueue is : ", q.dqueue())
    fmt.Println ("element dqueue is : ", q.dqueue())
    fmt.Println ("element dqueue is : ", q.dqueue())
      
    fmt.Println("Peek is : " , q.peek())
    q.print()
    
    
}
INFO