A Queue is a linear data structure that follows the First-In-First-Out (FIFO) principle. Elements are added at the rear end and removed from the front end of the queue.
Operation | Time Complexity |
---|---|
Enqueue | O(1) |
Dequeue | O(1) |
Front | O(1) |
Rear | O(1) |
package main
import "fmt"
// Queue structure
type Queue struct {
items []int
}
// Enqueue operation
func (q *Queue) Enqueue(item int) {
q.items = append(q.items, item)
}
// Dequeue operation
func (q *Queue) Dequeue() (int, error) {
if len(q.items) == 0 {
return 0, fmt.Errorf("queue is empty")
}
item := q.items[0]
q.items = q.items[1:]
return item, nil
}
// Front operation
func (q *Queue) Front() (int, error) {
if len(q.items) == 0 {
return 0, fmt.Errorf("queue is empty")
}
return q.items[0], nil
}
// IsEmpty operation
func (q *Queue) IsEmpty() bool {
return len(q.items) == 0
}
func main() {
queue := &Queue{}
// Enqueue elements
queue.Enqueue(1)
queue.Enqueue(2)
queue.Enqueue(3)
// Dequeue and print elements
fmt.Println("Queue operations:")
for !queue.IsEmpty() {
item, _ := queue.Dequeue()
fmt.Printf("%d ", item)
}
}
public class Queue {
private int maxSize;
private int[] queueArray;
private int front;
private int rear;
private int currentSize;
// Constructor
public Queue(int size) {
maxSize = size;
queueArray = new int[maxSize];
front = 0;
rear = -1;
currentSize = 0;
}
// Enqueue operation
public void enqueue(int value) {
if (currentSize < maxSize) {
if (rear == maxSize - 1) {
rear = -1;
}
queueArray[++rear] = value;
currentSize++;
} else {
System.out.println("Queue is full");
}
}
// Dequeue operation
public int dequeue() {
if (currentSize > 0) {
int temp = queueArray[front++];
if (front == maxSize) {
front = 0;
}
currentSize--;
return temp;
} else {
System.out.println("Queue is empty");
return -1;
}
}
// Front operation
public int front() {
return queueArray[front];
}
// IsEmpty operation
public boolean isEmpty() {
return (currentSize == 0);
}
public static void main(String[] args) {
Queue queue = new Queue(3);
// Enqueue elements
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
// Dequeue and print elements
System.out.println("Queue operations:");
while (!queue.isEmpty()) {
System.out.print(queue.dequeue() + " ");
}
}
}
from collections import deque
class Queue:
def __init__(self):
self.items = deque()
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if not self.is_empty():
return self.items.popleft()
return None
def front(self):
if not self.is_empty():
return self.items[0]
return None
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
# Example usage
if __name__ == "__main__":
queue = Queue()
# Enqueue elements
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
# Dequeue and print elements
print("Queue operations:")
while not queue.is_empty():
print(queue.dequeue(), end=" ")
Process Scheduling
Resource Sharing
Data Transfer
Customer Service
Array Implementation
Linked List Implementation
Circular Queue
When to Use Queues
Implementation Considerations
Queue Overflow
Queue Underflow
Performance Issues
Queues are essential data structures used in many real-world applications. Understanding queue operations and their implementations is crucial for developing efficient solutions in various domains.