#include<stdio.h>
#include<conio.h>
int item,c=0;
struct node
{
int num;
struct node *next;
}*start=NULL,*last=NULL;
typedef struct node node;
typedef struct node* nptr;
int count();
void ins_beg();
void ins_bet();
void ins_end();
void del_beg();
void del_bet();
void del_end();
void traverse();
void main()
{
int num;
clrscr();
while(1)
{ clrscr();
printf("\nÛÛÛÛÛ MENU ÛÛÛÛÛ");
printf("\n1.INSERTION_BEG");
printf("\n2.INSERTION_BET");
printf("\n3.INSERTION_END");
printf("\n4.DELETION_BEG");
printf("\n5.DELETION_BET");
printf("\n6.DELETION_END");
printf("\n7.TRAVERSE");
printf("\n8.EXIT");
printf("\nENTER YOUR CHOICE: ");
scanf("%d",&num);
switch(num)
{
case 1:ins_beg();
break;
case 2:ins_bet();
break;
case 3:ins_end();
break;
case 4:del_beg();
getch();
break;
case 5:del_bet();
getch();
break;
case 6:del_end();
getch();
break;
case 7:traverse();
getch();
break;
case 8:exit(0);
default:printf("\nWRONG CHOICE");
}
}
}
int count()
{
int c=0;
nptr p;
p=start;
while(p->next!=start)
{
p=p->next;
c++;
}
c++;
return c;
}
void ins_end()
{
nptr p;
p=(nptr)malloc(sizeof(node));
printf("\nenter the info part: ");
scanf("%d",&item);
p->num=item;
if(start==NULL)
{
nptr q;
q=(nptr)malloc(sizeof(node));
q->next=p;
q->num=++c;
start=q;
last=p;
p->next=start;
}
else
{
last->next=p;
p->next=start;
start->num=++c;
last=p;
}
}
void ins_beg()
{
nptr p;
p=(nptr)malloc(sizeof(node));
printf("\nenter the info part: ");
scanf("%d",&item);
p->num=item;
if(start==NULL)
{
nptr q;
q=(nptr)malloc(sizeof(node));
q->next=p;
q->num=++c;
start=q;
last=p;
p->next=start;
}
else
{
p->next=start->next;
start->next=p;
start->num=++c;
}
}
void del_beg()
{
if(start==NULL)
{
printf("\nunderflow");
return;
}
else
if(start->num==1)
{
nptr p;
p=start->next;
start=last=NULL;
printf("\ndeleted node is %d",p->num);
free(p);
}
else
{
nptr p;
p=start;
p=p->next;
start->next=p->next;
printf("\ndeleted node is %d",p->num);
free(p);
start->num=--c;
}
}
void del_end()
{
if(start==NULL)
{
printf("\nunderflow");
return;
}
else
if(start->num==1)
{
nptr p;
p=start->next;
start=last=NULL;
printf("\ndeleted node is %d",p->num);
free(p);
}
else
{
nptr p,q;
p=q=start;
while(p->next!=start)
{
q=p;
p=p->next;
}
q->next=start;
last=q;
printf("\ndeleted node is %d",p->num);
free(p);
start->num=--c;
}
}
void ins_bet()
{int item,i=1,pos,f;
nptr p,q;
p=(nptr)malloc(sizeof(node));
printf("\n\nenter the position where you want to insert");
scanf("%d",&pos);
f=count();
if(pos==0||pos==1||pos>f)
{printf("\nINSERTION NOT POSSIBLE");
}
else
{ q=start;
printf("\nenter the item: ");
scanf("%d",&item);
p->num=item;
q=start->next;
while(i<pos-1)
{ q=q->next;
i++;
}
p->next=q->next;
q->next=p;
start->num=++c;
}
}
void del_bet()
{ int i=1,pos,f;
nptr p,q;
if(start==NULL)
{ printf("\n\nempty");
}
else
{
printf("\nenter position: ");
scanf("%d",&pos);
p=q=start->next;
f=count();
if(pos==0||pos==1||pos>=f)
printf("\nDELETION NOT POSSIBLE");
else
{
while(i<pos)
{q=p;
p=p->next;
i++;
}
q->next=p->next;
start->num=--c;
printf("deleted node: %d",p->num);
free(p);
}
}
}
void traverse()
{
nptr p;
if(start==NULL)
{ printf("\nunderflow");
}
else
{
p=start;
printf("\nHEADER NODE(num part) -> %d",c);
printf("\n NODES ARE : ");
p=start->next;
while(p->next!=start)
{
printf(" %d",p->num);
p=p->next;
}
printf(" %d",p->num);
}
}
Comments
Post a Comment