w3resource

C Exercises: Implement a queue using a linked list with insert, display

C Queue: Exercise-3 with Solution

Write a C program to implement a queue using a linked list. Programs should contain functions for inserting elements into the queue, displaying queue elements, and checking whether the queue is empty or not.

Sample Solution:

C Code:

#include <stdio.h>
#include <stdlib.h>
// Define a structure for a node in the queue
struct Node {
   int data;
   struct Node *next;
};

struct Node* front = NULL; // Declare a pointer to the front of the queue
struct Node* rear = NULL; // Declare a pointer to the rear of the queue

// Function to insert an element into the queue
void enqueue(int x) {
   // Allocate memory for a new node
   struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
   temp->data = x; // Assign data to the new node
   temp->next = NULL; // Set the next pointer of the new node to NULL

   // Check if the queue is empty
   if (front == NULL && rear == NULL) {
      front = rear = temp; // If empty, set both front and rear to the new node
      return;
   }
   rear->next = temp; // Otherwise, link the new node to the rear of the queue
   rear = temp; // Update the rear pointer to the new node
}

// Function to remove an element from the queue
void dequeue() {
   struct Node* temp = front; // Store the front node in a temporary variable
   // Check if the queue is empty
   if (front == NULL) {
      printf("Queue is empty\n"); // Print error message if empty
      return;
   }
   // Check if there's only one node in the queue
   if (front == rear) {
      front = rear = NULL; // If yes, set both front and rear to NULL
   } else {
      front = front->next; // Otherwise, move front to the next node
   }
   free(temp); // Free memory allocated for the removed node
}

// Function to display the elements in the queue
void display() {
   struct Node* temp = front; // Initialize a temporary pointer to traverse the queue
   // Check if the queue is empty
   if (front == NULL) {
      printf("Queue is empty\n"); // Print message if empty
      return;
   }
   // Traverse the queue and print each element
   while (temp != NULL) {
      printf("%d ", temp->data); // Print the data of the current node
      temp = temp->next; // Move to the next node
   }
   printf("\n"); // Print a newline after displaying all elements
}

// Function to check whether the queue is empty
int is_empty() {
   return front == NULL; // Return 1 if front is NULL (indicating an empty queue), otherwise return 0
}

int main() {
    printf("Initialize a queue!"); // Print message to indicate initializing a queue
    // Insert some elements into the queue.
    printf("\nCheck the queue is empty or not? %s\n", is_empty() ? "Yes" : "No"); // Check if the queue is empty
	printf("\nInsert some elements into the queue:\n"); // Print message to indicate inserting elements into the queue
    enqueue(1); // Insert element 1 into the queue
    enqueue(2); // Insert element 2 into the queue
    enqueue(3); // Insert element 3 into the queue
    display(); // Display the elements of the queue
	printf("\nInsert another element into the queue:\n"); // Print message to indicate inserting another element
    enqueue(4); // Insert element 4 into the queue
    display(); // Display the elements of the queue
    printf("\nCheck the queue is empty or not? %s\n", is_empty() ? "Yes" : "No"); // Check if the queue is empty
    return 0; // Return from the main function
}

Sample Output:

Initialize a queue!
Check the queue is empty or not? Yes

Insert some elements into the queue:
1 2 3 

Insert another element into the queue:
1 2 3 4 

Check the queue is empty or not? No

Flowchart:

Flowchart: Implement a queue using a linked list with insert, display.
Flowchart: Implement a queue using a linked list with insert, display.

C Programming Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Remove an element from a queue.
Next: Remove an element from a queue (using an linked list).

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/c-programming-exercises/queue/c-queue-exercise-3.php