Name: Sagar Rambhau Parve
CRN: 24112005
Batch No.: S5
Problem Statement-: Design a service window system where customers arrive and are served in
order (FIFO), or a browser history system where the last visited page is accessed first (LIFO).
Use a linked list to implement a dynamic stack (push, pop, display) or queue (add, delete,
display) based on the given use case.
Algorithm
Step 1: Start
Step 2: Create struct patient Declare name (string) Declare code (integer)
Step 3: Create struct queue
Declare front and rear (integers)
Declare array data[SIZE] of type struct patient
Step 4: Declare global variable struct queue q
Step 5: Create function int isFull()
Return q.rear == SIZE - 1
Step 6: Create function void initQueue()
Set q.front = 0 Set q.rear = -1
Step 7: Create function int isEmpty
Return q.front > q.rear
8: Create function void enqueue(struct patient p)
If !isFull()
Increment q.rear
Set q.data[q.rear] = p
Else
Print "Could not insert data, Queue is full"
Step 9: Create function struct patient dequeue()
Declare struct patient temp
If !isEmpty()
Set temp = q.data[q.front]
Increment q.front
Return temp
Else
Print "Could not retrieve data, Queue is empty"
Set temp.name = "N/A"
Set temp.code = -1
Return temp
Step 10: Create function struct patient peek()
Declare struct patient temp
If !isEmpty()
Return q.data[q.front]
Else
Set temp.name = "N/A"
Set temp.code = -1
Return temp
Step 11: Start main() function
Step 12: Declare variables
int n, i
struct patient p
Step 13: Call initQueue() Print "How many patient records do you want to save?" Input value into
n
Step 14: Loop from i = 0 to n - 1 Print "Enter information for patient %d:\n", i + 1 Input p.name
Input p.code Call enqueue(p)
Step 15: Print "--- Patient information as per discharging in emergency ---"
While !isEmpty()
Call dequeue() and assign to p
Print "Patient Name: %s, Code: %d\n", p.name, p.code
Step 16: End
Code
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node* next;
} Node;
typedef struct {
Node* front;
Node* rear;
} Queue;
void initQueue(Queue* q) {
q->front = q->rear = NULL;
}
int isEmpty(Queue* q) {
return (q->front == NULL);
}
void enqueue(Queue* q, int value) {
Node* temp = (Node*)malloc(sizeof(Node));
if (temp == NULL) {
printf("Memory alloca on failed!\n");
return;
}
temp->data = value;
temp->next = NULL;
if (isEmpty(q)) {
q->front = q->rear = temp;
} else {
q->rear->next = temp;
q->rear = temp;
}
printf("Enqueued: %d\n", value);
}
void dequeue(Queue* q) {
Node* temp = q->front;
if (isEmpty(q)) {
printf("Queue is empty!\n");
return;
}
printf("Dequeued: %d\n", temp->data);
q->front = q->front->next;
if (q->front == NULL)
q->rear = NULL;
free(temp);
}
void displayQueue(Queue* q) {
Node* temp = q->front;
if (isEmpty(q)) {
printf("Queue is empty!\n");
return;
}
printf("Queue contents: ");
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
int choice, value;
Queue q;
initQueue(&q);
while (1) {
printf("\n--- Queue Menu ---\n");
printf("1. Enqueue\n");
printf("2. Dequeue\n");
printf("3. Display Queue\n");
printf("4. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter value to enqueue: ");
scanf("%d", &value);
enqueue(&q, value);
break;
case 2:
dequeue(&q);
break;
case 3:
displayQueue(&q);
break;
case 4:
printf("Exi ng...\n");
return 0;
default:
printf("Invalid choice! Try again.\n");
}
}
}
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Display Queue
4. Exit
Enter your choice: 1
Enter value to enqueue: 11
Enqueued: 11
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Display Queue
4. Exit
Enter your choice: 1
Enter value to enqueue: 22
Enqueued: 22
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Display Queue
4. Exit
Enter your choice: 1
Enter value to enqueue: 33
Enqueued: 33
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Display Queue
4. Exit
Enter your choice: 1
Enter value to enqueue: 44
Enqueued: 44
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Display Queue
4. Exit
Enter your choice: 3
Queue contents: 11 -> 22 -> 33 -> 44 -> NULL
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Display Queue
4. Exit
Enter your choice: 2
Dequeued: 11
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Display Queue
4. Exit
Enter your choice: 3
Queue contents: 22 -> 33 -> 44 -> NULL
--- Queue Menu ---
1. Enqueue
2. Dequeue
3. Display Queue
4. Exit
Enter your choice: 4
Exiting...
Press Enter to return to Quincy...