#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node
{
int num;
struct node *next;
}*start=NULL,*last=NULL;
typedef struct node node;
typedef struct node* nptr;
int count()
{
int c=1;
nptr p;
p=start;
while(p->next!=start)
{
p=p->next;
c++;
}
return c++;
}
void ins_beg()
{ int item;
nptr p,q;
p=(nptr)malloc(sizeof(node));
printf("\nenter the item: ");
scanf("%d",&item);
p->num=item;
if(start==NULL)
{
last=start=p;
p->next=start;
}
else
{
q=start;
while(q->next!=start)
q=q->next;
p->next=start;
start=p;
q->next=start;
}
}
void ins_end()
{
int item;
nptr p,q;
p=(nptr)malloc(sizeof(node));
printf("\nenter the item: ");
scanf("%d",&item);
p->num=item;
if(start==NULL)
{
start=p;
p->next=start;
}
else
{
last->next=p;
p->next=start;
last=p;
}
}
void del_beg()
{
int c;
nptr p;
if(start==NULL)
{
printf("\nunderflow");
return;
}
c=count();
if(c==1)
{
p=start;
last=start=NULL;
printf("\ndeleted node is %d",p->num);
free(p);
}
else
{
p=start;
start=start->next;
printf("\ndeleted node is %d",p->num);
free(p);
}
}
void del_end()
{
int c;
nptr p,q;
if(start==NULL)
{
printf("\nunderflow");
return;
}
c=count();
if(c==1)
{
p=start;
last=start=NULL;
printf("\ndeleted node is %d",p->num);
free(p);
}
else
{
p=last;
q=start;
while(q->next->next!=start)
q=q->next;
printf("\ndeleted node is %d",p->num);
free(p);
q->next=start;
last=q;
}
}
void traverse()
{
nptr p;
if(start==NULL)
{
printf("\n underflow");
return;
}
else
{
p=start;
printf("List: ");
while(p!=last)
{
printf(" %d",p->num);
p=p->next;
}
printf(" %d",p->num);
}
}
void ins_bet()
{int item,i=1,pos,c;
nptr p,q;
p=(nptr)malloc(sizeof(node));
printf("\n\nenter the position: ");
scanf("%d",&pos);
c=count();
if(pos==0||pos==1||pos>c)
printf("\nInsertion is not possible");
else
{
printf("\nenter the item: ");
scanf("%d",&item);
p->num=item;
q=start;
while(i<pos-1)
{ q=q->next;
i++;
}
p->next=q->next;
q->next=p;
}
}
void del_bet()
{ int i=1,pos,c;
nptr p,q;
if(start==NULL)
{ printf("\n\nlinked list is empty");
}
else
{
printf("\nenter position: ");
scanf("%d",&pos);
p=q=start;
c=count();
if(pos==0||pos==1||pos>=c)
printf("\nDeletion is not possible");
else
{
while(i<pos)
{q=p;
p=p->next;
i++;
}
q->next=p->next;
printf("deleted node: %d",p->num);
free(p);
}
}
}
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();
break;
case 5:del_bet();
break;
case 6:del_end();
break;
case 7:traverse();
getch();
break;
case 8:exit(0);
default:printf("\nWRONG CHOICE");
}
}
getch();
}
Comments
Post a Comment