0% found this document useful (0 votes)
5 views5 pages

Queue 12

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views5 pages

Queue 12

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

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...

You might also like