📖 Scenario: Imagine you are managing a line of customers waiting to buy tickets. You want to add new customers to the end of the line efficiently. We will use a linked list to represent this line.
🎯 Goal: Build a simple queue using a linked list in C. You will create the linked list node, set up the queue, add new elements to the end (enqueue), and print the queue to see the order of customers.
📋 What You'll Learn
Define a struct called Node with an integer data and a pointer next
Create two pointers called front and rear initialized to NULL
Write a function enqueue that adds a new node with given data at the end of the queue
Print the queue elements from front to rear
💡 Why This Matters
🌍 Real World
Queues are used in many real-life situations like lines at a bank, printer job scheduling, or task management systems.
💼 Career
Understanding how to implement queues with linked lists is important for software developers working on system design, operating systems, and real-time applications.
Progress0 / 4 steps
1
Create the Node struct and initialize queue pointers
Define a struct called Node with an integer data and a pointer next. Then create two pointers called front and rear and set both to NULL.
DSA C
Hint
Use typedef struct Node to define the node. Initialize front and rear as NULL pointers.
2
Create the enqueue function to add nodes
Write a function called enqueue that takes an integer value. Inside, create a new Node with data set to value and next set to NULL. If rear is NULL, set both front and rear to the new node. Otherwise, set rear->next to the new node and update rear to the new node.
DSA C
Hint
Use malloc to create a new node. Check if rear is NULL to handle empty queue. Otherwise, link the new node at the end.
3
Enqueue three values into the queue
Call the enqueue function three times to add the values 10, 20, and 30 to the queue.
DSA C
Hint
Call enqueue three times with the exact values 10, 20, and 30.
4
Print the queue elements from front to rear
Write a while loop that starts from front and prints each node's data followed by ->. Stop when the pointer is NULL. After the loop, print NULL to show the end of the queue.
DSA C
Hint
Use a while loop to move through the linked list from front to NULL. Print each data followed by ->. Finally, print NULL.
Practice
(1/5)
1. What does the enqueue operation do in a queue implemented using a linked list?
easy
A. Deletes the entire queue
B. Adds an element at the end (rear) of the queue
C. Checks if the queue is empty
D. Removes an element from the front of the queue
Solution
Step 1: Understand enqueue operation
Enqueue means adding a new element to the queue.
Step 2: Identify position of insertion in linked list queue
In a linked list queue, new elements are added at the rear (end) to maintain order.
Final Answer:
Adds an element at the end (rear) of the queue -> Option B
Quick Check:
Enqueue = Add at rear [OK]
Hint: Enqueue always adds at the rear in a queue [OK]
Common Mistakes:
Confusing enqueue with dequeue operation
Thinking enqueue adds at the front
Mixing queue with stack operations
2. Which of the following is the correct syntax to create a new node for enqueue in C linked list?
easy
A. newNode = malloc(sizeof(Node));
B. struct Node newNode = (struct Node*)malloc(sizeof(struct Node));
C. Node newNode = malloc(sizeof(Node));
D. struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
Solution
Step 1: Allocate memory for new node
In C, use malloc with sizeof(struct Node) to allocate memory.
Step 2: Correct pointer declaration and casting
Declare pointer as struct Node* and cast malloc result to (struct Node*).
Final Answer:
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); -> Option D
A. rear pointer is not updated when queue is empty
B. newNode->next should point to front
C. malloc size is incorrect
D. front pointer is updated incorrectly
Solution
Step 1: Check rear pointer update when queue is empty
When front is NULL, only front = newNode is executed, rear remains uninitialized.
Step 2: No rear update in if branch
The else block sets rear = newNode, but it is skipped when queue is empty.
Final Answer:
rear pointer is not updated when queue is empty -> Option A
Quick Check:
rear must be set when queue is empty [OK]
Hint: Always update rear when queue was empty [OK]
Common Mistakes:
Not setting rear when queue is empty
Incorrect next pointer assignment
Wrong malloc size or casting
5. Given a linked list queue with elements 5 -> 15 -> 25 -> NULL, what will be the queue after enqueueing 35 and then 45? Show the final linked list state.
hard
A. 5 -> 15 -> 25 -> 35 -> 45 -> NULL
B. 45 -> 35 -> 25 -> 15 -> 5 -> NULL
C. 5 -> 15 -> 25 -> NULL
D. 35 -> 45 -> 5 -> 15 -> 25 -> NULL
Solution
Step 1: Understand enqueue adds at rear
Enqueue adds new nodes at the end of the queue to maintain order.
Step 2: Add 35 and then 45 at the rear
After adding 35, queue becomes 5 -> 15 -> 25 -> 35 -> NULL. Then adding 45 results in 5 -> 15 -> 25 -> 35 -> 45 -> NULL.
Final Answer:
5 -> 15 -> 25 -> 35 -> 45 -> NULL -> Option A
Quick Check:
Enqueue order preserved at rear [OK]
Hint: Enqueue appends at rear, order stays same [OK]
Common Mistakes:
Adding new nodes at front instead of rear
Reversing the order of elements
Not updating rear pointer after enqueue
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.