/* Implementation of a circular queue represented
using dynamic data structure. */
#include<stdio.h>
#include<conio.h>
typedef struct node
{
int data;
struct node *next;
}node;
void init(node **R);
void enqueue(node **R,int x);
int dequeue(node **R);
int empty(node *rear);
void print(node *rear);
int front_element(node *rear);
int rear_element(node *rear);
void main()
{
int x,option;
int n = 0,i;
node *rear;
init(&rear);
clrscr();
do
{
printf("\n1. Insert\n2. Delete\n3. Print");
printf("\n4. Front element\n5. Rear Element\n6. Quit");
printf("\n your option: ");
scanf("%d",&option);
switch(option)
{
case 1: printf("\nEnter queue data : ");
scanf("\n %d",&x);
enqueue(&rear,x);
break;
case 2 : if(! empty(rear))
{
x=dequeue(&rear);
printf("\n Element deleted = %d",x);
}
else
printf("\n Uderflow..... Cannot delete");
break;
case 3 : print(rear);
break;
case 4 :if(!empty(rear))
printf("\nFront Element = %d",front_element(rear));
else
printf("\nQueue is empty");
break;
case 5 :if(!empty(rear))
printf("\nRear Element = %d",rear_element(rear));
else
printf("\nQueue is empty");
break;
}
}while(option != 6);
}
void init(node **R)
{
*R = NULL;
}
void enqueue(node **R,int x)
{
node *p;
p = (node *)malloc(sizeof(node));
p->data = x;
if(empty(*R))
{
p->next = p;
*R = p;
}
else
{
p->next = (*R)->next;
(*R)->next = p;
(*R) = p;
}
}
int dequeue(node **R)
{
int x;
node *p;
p=(*R)->next;
x=p->data;
if(p->next == p)
{
*R = NULL;
free(p);
return(x);
}
(*R)->next = p->next;
free(p);
return(x);
}
void print(node *rear)
{
node *p;
if(!empty(rear))
{
p = rear->next;
}
else
{
printf("\nQueue is empty");
return;
}
printf("\n");
do
{
printf("%d ",p->data);
p = p->next;
}while(p != rear->next);
}
int empty(node *P)
{
if(P->next== NULL)
return(1);
return(0);
}
int front_element(node *rear)
{
return(rear->next->data);
}
int rear_element(node *rear)
{
return(rear->data);
}
OUTPUT:-
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 1
Enter queue data : 34
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 4
Front Element = 34
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 5
Rear Element = 34
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 1
Enter queue data : 56
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 1
Enter queue data : 78
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 3
34 56 78
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 4
Front Element = 34
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 5
Rear Element = 78
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 2
Element deleted = 34
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 2
Element deleted = 56
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 2
Element deleted = 78
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option: 2
Uderflow..... Cannot delete
1. Insert
2. Delete
3. Print
4. Front element
5. Rear Element
6. Quit
your option:6
Subscribe to:
Post Comments (Atom)
Archives
-
▼
2013
(15)
-
▼
December
(7)
- Implementation of a circular queue represented usi...
- Implementation of a Queue using dynamic memory all...
- Implementation of stack using Dynamic memory alloc...
- Array Implementation of list
- A program for Circular Queue using an array
- A program for queue usimg an array
- Program for Array Implementation of Stack
-
▼
December
(7)
If you really desire to get such type of information, visit this blog quickly.
ReplyDeletetutorial for c++
Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It’s always nice when you can not only be informed, but also entertained! odzyskiwanie skasowanych smsów
ReplyDelete