[go: up one dir, main page]

0% found this document useful (0 votes)
44 views8 pages

Lab 4

This document contains code for implementing a queue data structure and examples of its use. Program 1 defines a queue class with enqueue, dequeue and display methods. Program 2 implements a circular queue. The task section provides an example of using a queue to model a petrol pump queue, with cars enqueueing and dequeueing as they pay.

Uploaded by

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

Lab 4

This document contains code for implementing a queue data structure and examples of its use. Program 1 defines a queue class with enqueue, dequeue and display methods. Program 2 implements a circular queue. The task section provides an example of using a queue to model a petrol pump queue, with cars enqueueing and dequeueing as they pay.

Uploaded by

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

DATA STRUCTURES AND ALGORITHMS

LAB-4

SUBMITTED BY

Tayyaba Riaz
Roll No: 2020-bcs-039

SUBMITTED TO

SIR ADEEL KHALID


Task 1
Perform all sample codes and understand them.

 Program 1

#include<iostream>
using namespace std;
#define n 10
class Queue
{
public:
int arr[n];
int front;
int rear;
public:
Queue() {
front = -1;
rear = -1;
}
bool isEmpty() {
if (front == rear == -1 || front > rear)
return true;
else
return false;
}
bool isFull() {
if (rear == n - 1)
return true;
else
return false;
}

void enqueue(int data) {


if (!isFull() && isEmpty()) {
rear++;
front++;
arr[rear] = data;

else if (!isFull() && !isEmpty()) {


rear++;
arr[rear] = data;
}
else
cout << "Queue is overflow : ";
}
void dequeue() {
if (isEmpty()) {
cout << "Queue is underflow ";
}
else
{

2
cout << "\nDeleted : " <<arr[front];
front++;
if (front == rear)
front = rear = -1;
}
front++;
}
void display()
{
if (isEmpty())
cout << "\nQueue is Empty!!!";
else
{
int i;
cout << "\nQueue elements are:\n";
for (i = front; i <= rear; i++)
cout << arr[i] << endl;
}
}

};
int main() {
int value, choice;
Queue q;
while (1) {
cout << "\n\n***** MENU *****\n";
cout << "1. Insertion\n2. Deletion\n3. Display\n4. Exit";
cout << "\nEnter your choice: ";
cin >> choice;
switch (choice) {
case 1: cout << "Enter the value to be insert: ";
cin >> value;
q.enqueue(value);
break;
case 2: q.dequeue();
break;
case 3: q.display();
break;

case 4: exit(0);
default: cout << "\nWrong selection!!! Try again!!!";
}

}
getchar();
return 0;
}

OUTPUT

3
 Program 2

#include<iostream>
#include<conio.h>
using namespace std;
#define SIZE 5
void enQueue(int);
void deQueue();
void display();
int cQueue[SIZE], front = -1, rear = -1;
void main()
{
int choice, value;

while (1) {
cout << "\n****** MENU ******\n";
cout << "1. Insert\n2. Delete\n3. Display\n4. Exit\n";
cout << "Enter your choice: ";
cin >> choice;
switch (choice) {
case 1: cout << "\nEnter the value to be insert: ";
cin >> value;
enQueue(value);
break;
case 2: deQueue();
break;
case 3: display();
break;
case 4: exit(0);
default: cout << "\nPlease select the correct choice!!!\n";
}

4
}
}
void enQueue(int value)
{
if ((front == 0 && rear == SIZE - 1) || (front == rear + 1))
cout << "\nCircular Queue is Full! Insertion not possible!!!\n";
else {
if (rear == SIZE - 1 && front != 0)
rear = -1;
cQueue[++rear] = value;
cout << "\nInsertion Success!!!\n";
if (front == -1)
front = 0;
}
}
void deQueue()
{
if (front == -1 && rear == -1)
cout << "\nCircular Queue is Empty! Deletion is not possible!!!\n";
else {
cout << "\nDeleted element :" << cQueue[front++];
if (front == SIZE)
front = 0;
if (front - 1 == rear)
front = rear = -1;
}
}
void display()

{
if (front == -1)
cout << "\nCircular Queue is Empty!!!\n";
else {
int i = front;
cout << "\nCircular Queue Elements are : \n";
if (front <= rear) {
while (i <= rear)
cout << "\t" << cQueue[i++];
}
else {
while (i <= SIZE - 1)
cout << "\t" << cQueue[i++];
i = 0;
while (i <= rear)
cout << "\t" << cQueue[i++];
}
}
}

OUTPUT:

5
TASK 2
Implement any real world example using queue.

#include "pch.h"
#include<iostream>
#include<string>
using namespace std;
#define n 100
class Queue
{
public:
int arr[n];
int front;
int rear;
public:
Queue() {
front = -1;
rear = -1;
}
bool isEmpty() {
if (front == rear == -1 || front > rear)
return true;
else
return false;
}
bool isFull() {
if (rear == n - 1)
return true;
else

6
return false;
}

void enqueue(int value) {


if (rear == n - 1)
cout << "\nQueue is Full!!! Insertion is not possible!!!";
else {
if (front == -1)
front = 0;
rear++;
arr[rear] = value;
}
}

void dequeue() {
if (isEmpty()) {
cout << "Queue is underflow ";
}
else
{
front++;
if (front == rear)
front = rear = -1;
}
front++;
}
void display()
{
if (isEmpty())
cout << "\nQueue is Empty!!!";
else
{
int i;
for (i = front; i <= rear; i++)
cout <<"CAR : "<< arr[i] << endl;
}
}

};
int main() {
Queue q;
string a;
cout << "WELCOME TO WAH PETROL PUMP : "<<endl;
cout << " PLEASE MAKE A QUEUE :\n";
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4);
q.enqueue(5);
if (q.isEmpty()) {
cout << "QUEUE IS EMPTY ";
}
else
{
cout << "\nNumber of cars in Queue \n";
q.display();
}

7
done: cout << "\nPress Done after paying amount : ";
cin >> a;
if ((a == "Done" || a == "done" )&& !q.isEmpty()) {
q.dequeue();
cout << "\nNext Car ";
goto done;
}
cout << "\nRemaining cars : ";
q.display();

return 0;
}

OUTPUT

You might also like