#include<conio.h>
#include<stdio.h>
#define MAX 10
typedef struct node
{
int data;
struct node *next;
}node;
// A circular linked list is referenced through a pointer to the rear node
node * initialise();//
int empty(node *rear);
int full(node *rear);
node * insert(node *rear,int x);
node * Delete(node *rear);
int getfront(node *rear);
void print(node *rear);
void main()
{
node *rear;
int x,i,op;
rear=initialise();
clrscr();
do
{
printf("\n\n1)Insert\n2)Delete\n3)Print\n4)Quit");
printf("\nEnter Your Choice:");
scanf("%d",&op);
switch(op)
{
case 1: printf("\n Enter a value:");
scanf("%d",&x);
rear=insert(rear,x);
break;
case 2: if(!empty(rear))
{
x=getfront(rear);
printf("\Deleted Data=%d",x);
rear=Delete(rear);//remove the front element
}
else
printf("\nQueue is empty !!!!");
break;
case 3: print(rear);break;
}
}while(op!=4);
}
node * initialise()
{
return(NULL);
}
node *insert(node *rear,int x)
{
node *p;
p=(node*)malloc(sizeof(node));
p->data=x;
if(rear==NULL)//first node
{
p->next=p;
return p;
}
else //insert at the rear end
{
p->next=rear->next;
rear->next=p;
return(p);
}
}
node * Delete(node *rear)
{
node *p;
p=rear->next;//p points to front node
if(rear->next==rear) //deleting the only element
rear=NULL;
else
rear->next=p->next;
free(p);
return(rear);
}
int getfront(node *rear)
{
return(rear->next->data);
}
void print(node *rear)
{
int i;
node *p;
if(rear!=NULL)
{ printf("\n");
p=rear->next;
do
{
printf("%d ",p->data);
p=p->next;
}while(p!=rear->next);
}
}
int empty(node *rear)
{
if(rear==NULL)
return 1;
return 0;
}
#include<stdio.h>
#define MAX 10
typedef struct node
{
int data;
struct node *next;
}node;
// A circular linked list is referenced through a pointer to the rear node
node * initialise();//
int empty(node *rear);
int full(node *rear);
node * insert(node *rear,int x);
node * Delete(node *rear);
int getfront(node *rear);
void print(node *rear);
void main()
{
node *rear;
int x,i,op;
rear=initialise();
clrscr();
do
{
printf("\n\n1)Insert\n2)Delete\n3)Print\n4)Quit");
printf("\nEnter Your Choice:");
scanf("%d",&op);
switch(op)
{
case 1: printf("\n Enter a value:");
scanf("%d",&x);
rear=insert(rear,x);
break;
case 2: if(!empty(rear))
{
x=getfront(rear);
printf("\Deleted Data=%d",x);
rear=Delete(rear);//remove the front element
}
else
printf("\nQueue is empty !!!!");
break;
case 3: print(rear);break;
}
}while(op!=4);
}
node * initialise()
{
return(NULL);
}
node *insert(node *rear,int x)
{
node *p;
p=(node*)malloc(sizeof(node));
p->data=x;
if(rear==NULL)//first node
{
p->next=p;
return p;
}
else //insert at the rear end
{
p->next=rear->next;
rear->next=p;
return(p);
}
}
node * Delete(node *rear)
{
node *p;
p=rear->next;//p points to front node
if(rear->next==rear) //deleting the only element
rear=NULL;
else
rear->next=p->next;
free(p);
return(rear);
}
int getfront(node *rear)
{
return(rear->next->data);
}
void print(node *rear)
{
int i;
node *p;
if(rear!=NULL)
{ printf("\n");
p=rear->next;
do
{
printf("%d ",p->data);
p=p->next;
}while(p!=rear->next);
}
}
int empty(node *rear)
{
if(rear==NULL)
return 1;
return 0;
}
0 Comments