C++ Queue Project Source Code Using Array,Linked list and Doubly/circular Linked List.Each data structure has its own functions. User can select from the menu for data type selection to build queue.All data structures has basic queue functions. En-queue, De-queue, show front, show queue, etc.
C++ Queue Project Source Code Using Array,Linked list and Doubly/circular Linked List
#include<iostream>
#include<windows.h>
using namespace std;
// Queue for array
void enqueue(int);
void dequeue();
int isempty();
int isfull();
void array_call();
void show();
const int total = 2;
int marks[total];
int rear = -1; //rear mean last element of queue
int front = 0;//front mean first element of queue
int counter = 0;
// Queue for Linklist
struct list
{
int data;
list * next;
};
list *f, *c, *p, *temp;
int linklist_counter = 0;
void linklist_insert();
void linklist_call();
void linklist_dequeu();
void linklist_show();
void linklist_front();
int linklist_isempty();
//Queue for Double Linklist
struct dlist {
dlist * prev;
int data;
dlist * next;
};
dlist *first, *current, *previos, *tamp;
int dlinklist_counter = 0;
void dlinklist_insert();
void dlinklist_call();
void dlinklist_dequeu();
void dlinklist_show();
void dlinklist_front();
int main()
{
zee:
system("cls");
int i;
cout << "\t\t\t\t Welcome in Queue \n 1- Array \n 2- Link List \n 3- Double Link List \n 4- EXIT \n";
cin >> i;
switch (i)
{
case 1:
array_call();
goto zee;
case 2:
linklist_call();
goto zee;
case 3:
dlinklist_call();
goto zee;
case 4:
break;
default:
cout << " You enter invalid number PLZ Select again \n";
system("pause");
goto zee;
}
return 0;
}
// function of Array
void array_call()
{
start:
system("cls");
cout << "\t\t\t\t Welcome in Queue with Array";
int input;
cout << "\n 1- Enqueu \n 2- Dequeu \n 3- Front\n 4- Show all data \n 5- Exit from Queue in Array \n";
cin >> input;
switch (input)
{
case 1:
{int z; z = isfull();
if (z)
{
int y;//y is input whiich you insert in queue
cout << "Enter you number";
cin >> y;
enqueue(y);
cout << " Number entered \n";
system("pause");
}
else
{
cout << "Your Queue is full \n";
system("pause");
}
goto start;
break;
}
case 2:
{ int a; a = isempty();
if (a)
{
dequeue();
cout << "Number deleted \n ";
system("pause");
}
else
{
cout << "Your Queue is Empty \n";
system("pause");
}
goto start;
break;
}
case 3:
{
int a; a = isempty();
if (a)
cout << "\n Your front value is " << marks[front]<<endl;
else
cout << "Your Queue is Empty"<<endl;
system("pause");
goto start;
break;
}
case 4:
{
int a; a = isempty();
if (a)
show();
else
cout << "Your Queue is Empty"<<endl;
system(" pause");
goto start;
}
case 5:
{
break;
}
default:
cout << "\n You enter invalid Number \n";
system("pause");
goto start;
break;
}
}
void enqueue(int x)
{
rear = (rear + 1) % total;
marks[rear] = x;
counter = counter + 1;
}
void dequeue()
{
front = (front + 1) % total;
counter = counter - 1;
}
int isempty()
{
return(counter != 0);
}
int isfull()
{
return(counter != total);
}
void show()
{
int j = front;
for (int i = 0; i < counter; i++)
{
cout << " " << marks[j];
j++;
j = j%total;
}
}
//function of LINK LIST
void linklist_call()
{
linklist_start:
system("cls");
cout << "\t\t\t\t Welcome in linklist Queue";
int input;
cout << "\n 1- Enqueu \n 2- Dequeu \n 3- show list \n 4- Front\n 5- Exit\n";
cin >> input;
switch (input)
{
case 1:
linklist_insert();
cout << " Number entered \n";
system("pause");
goto linklist_start;
case 2:
linklist_dequeu();
goto linklist_start;
case 3:
linklist_show();
goto linklist_start;
case 4:
linklist_front();
goto linklist_start;
case 5:
break;
default:
cout << " You enter invalid number ";
system("pause");
goto linklist_start;
}
}
void linklist_insert()
{
c = new list;
if (linklist_counter == 0)
{
f = c;
p = c;
cout << " Enter data ";
cin >> c->data;
}
else
{
p->next = c;
p = c;
cout << " Enter data";
cin >> c->data;
}
c->next = NULL;
linklist_counter++;
}
void linklist_dequeu()
{
if (linklist_counter == 0)
{
cout << " Queue is empty";
system("pause");
}
else
{
f = f->next;
linklist_counter--;
cout << "Number deleted \n ";
system("pause");
}
}
void linklist_show()
{
int emp = linklist_isempty();
if (emp)
{
temp = f;
while (temp->next != NULL)
{
cout << " " << temp->data;
temp = temp->next;
}
cout << " " << temp->data;
}
else
{
cout << " Queue is empty";
}
system("pause");
}
void linklist_front()
{
int emp = linklist_isempty();
if (emp)
{
cout << " " << f->data;
}
else
{
cout << " Queue is empty";
}
system("pause");
}
int linklist_isempty()
{
return(linklist_counter != 0);
}
//function of DOUBLE LINK LIST
void dlinklist_call()
{
dlinklist_start:
system("cls");
cout << "\t\t\t\t Welcome in Double linklist Queue";
int dinput;
cout << "\n 1- Enqueu \n 2- Dequeu \n 3- show list \n 4- Front\n 5- Exit\n";
cin >> dinput;
switch (dinput)
{
case 1:
dlinklist_insert();
cout << " Number entered \n";
system("pause");
goto dlinklist_start;
case 2:
dlinklist_dequeu();
cout << "Number deleted \n ";
system("pause");
goto dlinklist_start;
case 3:
dlinklist_show();
goto dlinklist_start;
case 4:
dlinklist_front();
goto dlinklist_start;
case 5:
break;
default:
cout << " You enter invalid number ";
system("pause");
goto dlinklist_start;
}
}
void dlinklist_insert()
{
current = new dlist;
if (dlinklist_counter == 0)
{
previos = current;
first = current;
current->prev = NULL;
cout << " Enter Data ";
cin >> current->data;
}
else
{
previos->next = current;
current->prev = previos;
previos = current;
cout << " Enter Data ";
cin >> current->data;
}
current->next = NULL;
dlinklist_counter++;
}
void dlinklist_dequeu()
{
if (dlinklist_counter == 0)
{
cout << " Queue is empty";
system("pause");
}
else
{
first = first->next;
dlinklist_counter--;
}
}
void dlinklist_show()
{
if (dlinklist_counter == 0)
{
cout << " Queue is empty";
}
else
{
tamp = first;
while (tamp->next != NULL)
{
cout << " " << tamp->data;
tamp = tamp->next;
}
cout << " " << tamp->data;
}
system("pause");
}
void dlinklist_front()
{
if (dlinklist_counter == 0)
{
cout << " Queue is empty";
}
else
{
cout << " " << first->data;
}
system("pause");
}
Output of Program
Welcome in linklist Queue
1- Enqueu
2- Dequeu
3- show list
4- Front
5- Exit
3