Showing posts with label queue. Show all posts
Queue Implementation using Linked List
Tuesday, 29 April 2014
Posted by Naveen's Blogs
Tag :
Data Structures,
queue
#include < iostream.h >
#include < conio.h >
#include < stdlib.h >
struct node
{
char name[20];
int age;
float height;
node *nxt;
};
node *start_ptr=NULL;
int main()
{
void push ();
void pop();
char ch;
clrscr();
cout<<"Queue";
cout<<"-----";
do
{
cout<<"Select an operation";
cout<<"u->push";
cout<<"o->pop";
cout<<"e->exit";
cin>>ch;
switch(ch)
{
case 'u':
push();
break;
case 'o':
pop();
break;
case 'e':
exit(0);
}
}while(ch!='e');
return 0;
}
void pop()
{
node *temp1,*temp2;
if(start_ptr==NULL)
cout<<"The list is empty";
else
{
temp1=start_ptr;
temp2=temp1;
while(temp1->nxt!=NULL)
{
temp2=temp1;
temp1=temp1->nxt;
}
if(temp1==temp2)
{
cout<< temp1->name<<",";
cout<< temp1->age<<", ";
cout<< temp1->height;
start_ptr=NULL;
}
else
{
cout<< temp1->name<<", ";
cout<< temp1->age<<", ";
cout<< temp1->height;
temp2->nxt=NULL;
delete temp1;
}
}
}
void push ()
{
node *temp;
temp = new node;
cout << "Please enter the name of the person: ";
cin >> temp->name;
cout << "Please enter the age of the person: ";
cin >> temp->age;
cout << "Please enter the height of the person: ";
cin >> temp->height;
if (start_ptr == NULL)
{
temp->nxt=NULL;
start_ptr = temp;
}
else
{
temp->nxt=start_ptr;
start_ptr=temp;
}
}
#include< iostream.h >
#include< conio.h >
const int MAX=5;
class pqueue
{
int front,rear;
public:
struct data
{
int val,p,o;
}d[MAX];
pqueue()
{
front=rear=-1;
}
void insert(data d1);
data deletion();
void display();
};
void pqueue :: insert(data d1)
{
if(rear==MAX-1)
cout<<"Priority Queue is Full";
else
{
rear++;
d[rear]=d1;
if(front==-1)
front=0;
data temp;
for(int i=front;i<=rear;i++)
for(int j=i+1;j<=rear;j++)
{
if(d[i].p > d[j].p)
{
temp=d[i];
d[i]=d[j];
d[j]=temp;
}
else
{
if(d[i].p==d[j].p)
{
if(d[i].o > d[j].o)
{
temp=d[i];
d[i]=d[j];
d[j]=temp;
}
}
}
}
}
}
data pqueue :: deletion()
{
data d1;
if(front==-1)
cout<<"Priority Queue is Empty";
else
{
d1=d[front];
if(front==rear)
front=rear=-1;
else
front++;
}
return d1;
}
void pqueue :: display()
{
if(front==-1)
cout<<"Priority Queue is Empty";
else
{
for(int i=front;i<=rear;i++)
{
cout<<"Object :"<< i+1<< endl;
cout<<"Value ="<< d[i].val<< endl;
cout<<"Priority="<< d[i].p<< endl;
cout<<"Order = "<< d[i].o<< endl;
}
}
}
void main()
{
pqueue p1;
data d1;
char op;
do
{
int ch;
clrscr();
cout<<"----------Menu-------------";
cout<<" 1.Insertion
2.Deletion
3.Display
4.Exit";
cout<<"Enter your Choice<1..4> ?";
cin>>ch;
switch(ch)
{
case 1 : cout<<"Enter Value ?";
cin>>d1.val;
cout<<"Enter Priority?";
cin>>d1.p;
cout<<"Enter Order ?";
cin>>d1.o;
p1.insert(d1);
break;
case 2 : d1=p1.deletion();
cout<<"Value = "<< d1.val<< endl;
cout<<"Priority = "<< d1.p<< endl;
cout<<"Order ="<< d1.o<< endl;
break;
case 3 : p1.display();
break;
}
cout<<"Do You Want to Continue < Y/N > ?";
cin>>op;
}while(op=='Y' || op=='y');
getch();
}
#include< iostream.h >
#include< conio.h >
const int MAX = 5;
class cqueue
{
int a[MAX],front,rear;
public :
cqueue()
{
front=rear=-1;
}
void insert(int );
int deletion();
void display();
};
void cqueue :: insert(int val)
{
if((front==0 && rear==MAX-1) || (rear+1==front))
cout<<" Circular Queue is Full";
else
{
if(rear==MAX-1)
rear=0;
else
rear++;
a[rear]=val;
}
if(front==-1)
front=0;
}
int cqueue :: deletion()
{
int k;
if(front==-1)
cout<<"Circular Queue is Empty";
else
{
k=a[front];
if(front==rear)
front=rear=-1;
else
{
if(front==MAX-1)
front=0;
else
front++;
}
}
return k;
}
void cqueue :: display()
{
int i;
if(front==-1)
cout<<"Circular Queue is Empty";
else
{
if(rear < front)
{
for(i=front;i<=MAX-1;i++)
cout<< a[i] <<" ";
for(i=0;i<=rear;i++)
cout<< a[i] <<" ";
}
else
{
for(i=front;i<=rear;i++)
cout<< a[i]<<" ";
cout<< endl;
}
}
}
void main()
{
cqueue c1;
int ch,val;
char op;
do
{
clrscr();
cout<<"-----------Menu-------------";
cout<<"1.Insertion
2.Deletion
3.Display
4.Exit";
cout<<"Enter Your Choice <1..4> ?";
cin>>ch;
switch(ch)
{
case 1 : cout<<"Enter Element to Insert ?";
cin>>val;
c1.insert(val);
break;
case 2 : val=c1.deletion();
cout<<"Deleted Element :"<< val<< endl;
break;
case 3 : c1.display();
break;
}
cout<<"Do you want to continue < Y/N > ?";
cin>>op;
}while(op=='Y' || op=='y');
getch();
}
# include < iostream.h >
# include < conio.h >
# define SIZE 20
class queue
{
int a[SIZE];
int front;
int rear;
public:
queue();
~queue();
void insert(int i);
int remove();
int isempty();
int isfull();
};
queue::queue()
{
front=0;
rear=0;
}
queue::~queue()
{
delete []a;
}
void queue::insert(int i)
{
if(isfull())
{
cout<<"*Queue is FULL !!!No insertion allowed further.*";
return;
}
a[rear] = i;
rear++;
}
int queue::remove()
{
if(isempty())
{
cout<<"*Queue Empty !!!Value returned will be garbage.*";
return (-9999);
}
return(a[front++]);
}
int queue::isempty()
{
if(front == rear)
return 1;
else
return 0;
}
int queue::isfull()
{
if(rear == SIZE)
return 1;
else
return 0;
}
void main()
{
clrscr();
queue q;
q.insert(1);
q.insert(2);
cout<<""<< q.remove();
cout<<""<< q.remove();
cout<<"" << q.remove();
getch();
}