Linked List program using C language
Operations:- Create list, insertion (beg, mid, end), deletion (beg, mid, end)
#include<stdio.h>
#include<conio.h>
void inst_beg();
void inst_mid();
void inst_end();
void del_beg();
void del_mid();
void del_end();
void traverse();
int count();
struct node
{ int num;
struct node *next;
}*start=NULL;
typedef struct node node;
typedef struct node* nptr;
void main()
{ char choice;
while(1)
{
clrscr();
printf("-------LINKED LIST-------\n\n");
printf(" 1.Insertion at begining\n");
printf(" 2.Insertion at mid\n");
printf(" 3.Insertion at end\n");
printf(" 4.Deletion from begining\n");
printf(" 5.Deletion from mid\n");
printf(" 6.Deletion from end\n");
printf(" 7.Traverse\n");
printf(" 8.Exit\n\n");
printf(" Enter your choice: ");
fflush(stdin);
scanf("%c",&choice);
switch(choice)
{ case '1': inst_beg();
break;
case '2': inst_mid();
break;
case '3': inst_end();
break;
case '4': del_beg();
break;
case '5': del_mid();
break;
case '6': del_end();
break;
case '7': traverse();
break;
case '8': exit(0);
default: printf("\n\ninvalid choice");
}
getch();
}
}
void inst_beg()
{ int item;
nptr p;
p=(nptr)malloc(sizeof(node));
printf("\nenter the item: ");
scanf("%d",&item);
p->num=item;
if(start==NULL)
{ p->next=start;
start=p;
}
else
{ p->next=start;
start=p;
}
}
void inst_end()
{ int item;
nptr p;
p=(nptr)malloc(sizeof(node));
printf("\nenter the item: ");
scanf("%d",&item);
p->num=item;
if(start==NULL)
{ p->next=start;
start=p;
}
else
{ nptr q;
q=start;
while(q->next!=NULL)
{ q=q->next;
}
q->next=p;
p->next=NULL;
}
}
void inst_mid()
{ int item,i=1,pos,res;
nptr p,q;
p=(nptr)malloc(sizeof(node));
printf("\n\nenter position for insertion: ");
scanf("%d",&pos);
res=count();
if(pos==0||pos==1||pos>res)
{ printf("\n\ninsertion 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;
}
}
int count()
{ int c=0;
nptr p;
p=start;
while(p!=NULL)
{ p=p->next;
c++;
}
return c;
}
void del_beg()
{ if(start==NULL)
{ printf("\n\nlinked list is empty");
}
else
{ nptr p;
p=start;
start=p->next;
printf("\ndeleted node: %d",p->num);
free(p);
}
}
void del_end()
{ if(start==NULL)
{ printf("\n\nlinked list is empty");
}
else
{ nptr p,q;
p=q=start;
while(p->next!=NULL)
{ q=p;
p=p->next;
}
q->next=NULL;
printf("\ndeleted node: %d",p->num);
free(p);
}
}
void del_mid()
{ int i=1,pos,res;
nptr p,q;
if(start==NULL)
{ printf("\n\nempty");
}
else
{
printf("\nenter position: ");
scanf("%d",&pos);
p=q=start;
res=count();
if(pos==0||pos==1||pos>=res)
{ printf("\n\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 traverse()
{ if(start==NULL)
{ printf("\nempty");
}
else
{ nptr p;
p=start;
while(p!=NULL)
{ printf(" %d",p->num);
p=p->next;
}
}
}
Comments
Post a Comment