Queue using Linked List
Implementation of queue using a linked list.
Queue Node Structure :
struct Node {
    int data;
    struct Node *next;
};
struct Node *front = NULL;
struct Node *rear = NULL;Enqueue Operation :
void enqueue(int data) {
    // Creating a new queue node
    struct Node *newNode;
    newNode = (struct Node *)malloc(sizeof(struct Node));
    newNode -> data = data;
    // If this node is the first node to be inserted
    if (front == NULL) {
        front = rear = newNode;
    }
    // If other nodes are already present
    else {
        rear -> next = newNode;
        rear = newNode;
    }
    
}Dequeue Operation :
int dequeue() {
    // If queue is already empty
    if (front == NULL) {
        printf("Queue underflow\n");
        return -1;
    }
    else {
        // Pointers for node & data to be deleted
        struct Node *toDelete = front;
        int deletedData = front -> data;
        front = front -> next;
        free(toDelete);
        return deletedData;
    }
    
}Display Operation :
void display() {
    // If queue is empty
    if (front == NULL) {
        printf("Queue is empty\n");
        return;
    }
    struct Node *ptr = front;
    while (ptr != NULL) {
        printf("%d\t", ptr -> data);
        ptr = ptr -> next;
    }
    printf("\n");
    
}Contributed by Nitin Ranganath
Last updated
Was this helpful?