//PROGRAM TO IMPLEMENT SINGLY LINKED LIST\\
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
#include<stdlib.h>
struct node
{
int data;
struct node *link;
};
void append(struct node **,int);
void add_at_begin(struct node **,int);
void del(struct node **,int);
void in_middle(struct node **,int,int);
int count(struct node *);
void display(struct node *);
void main()
{
int num,loc;
char choice;
struct node *p;
p=NULL;
do
{
clrscr();
printf("PROGRAM TO IMPLEMENT SINGLY LINKED LIST\n");
printf("---------------------------------------\n");
printf("\n 1. Create/appending the list");
printf("\n 2. Insert node at begining");
printf("\n 3. Insert node in middle");
printf("\n 4. Deleting a node");
printf("\n 5. Counting the no. of nodes");
printf("\n 6. Displaying the list");
printf("\n 7. Exit");
oper:
gotoxy(1,15);printf(" ");
gotoxy(1,11);printf("\n Enter your choice : ");
choice=getch();
switch(choice)
{
char ans;
case '1':
do
{
printf("Enter any number : ");
scanf("%d",&num);
append(&p,num);
printf("Entr more (y/n) : ");
fflush(stdin);
ans=getchar();
}while(ans!='n');
break;
case '2':
printf("Enter the data : ");
scanf("%d",&num);
add_at_begin(&p,num);
break;
case '3':
printf("\n Enter the data position : ");
scanf("%d",&loc);
printf("\n Enter the data : ");
scanf("%d",&num);
in_middle(&p,loc,num);
break;
case '4':
printf("\n Enter the data u want to delete : ");
scanf("%d",&num);
del(&p,num);
break;
case '5':
printf("\n The no. of nodes are %d",count(p));
getch();
break;
case '6':
display(p);
getch();
break;
case '7':
printf("\n Quiting.......");
getch();
exit(0);
break;
default:
gotoxy(1,15);printf("Invalid choice please Enter correct choice");
getch();
goto oper;
}
}while(choice!=7);
}
void append(struct node **q,int num)
{
struct node *temp,*r;
temp=*q;
if(*q==NULL)
{
temp=(struct node *)malloc(sizeof(struct node));
temp->data=num;
temp->link=NULL;
*q=temp;
}
else
{
temp=*q;
while(temp->link!=NULL)
{
temp=temp->link;
}
r=(struct node *)malloc(sizeof(struct node));
r->data=num;
r->link=NULL;
temp->link=r;
}
}
void display(struct node *q)
{
if(q==NULL)
{
printf("\nEmpty link list can't display the data");
getch();
goto last;
}
while(q!=NULL)
{
printf("\n%d",q->data);
q=q->link;
}
last:
}
int count(struct node *q)
{
int c=0;
if(q==NULL)
{
printf("Empty link list \n");
getch();
goto last;
}
while(q!=NULL)
{
c++;
q=q->link;
}
last:
return c;
}
void add_at_begin(struct node **q,int num)
{
struct node *temp;
if(*q==NULL)
{
printf("Link list is empty can't insert");
getch();
goto last;
}
else
{
temp=(struct node *)malloc(sizeof(struct node));
temp->data=num;
temp->link=*q;
*q=temp;
}
last:
getch();
}
void in_middle(struct node **q,int loc,int num)
{
struct node *temp,*n;
int c=1,flag=0;
temp=*q;
if(*q==NULL)
{
printf("\nLink List is empty can't insert");
getch();
goto last;
}
else
while(temp!=NULL)
{
if(c==loc)
{
n=(struct node *)malloc(sizeof(struct node));
n->data=num;
n->link=temp->link;
temp->link=n;
flag=1;
}
c++;
temp=temp->link;
}
if(flag==0)
{
printf("\nNode specified doesn't Exist can't Enter the Data");
getch();
}
else
{
printf("Data Inserted");
getch();
}
last:
getch();
}
void del(struct node **q,int num)
{
if(*q==NULL)
{
printf("\n Empty linked list cant delete the data");
getch();
goto last;
}
else
{
struct node *old,*temp;
int flag=0;
temp=*q;
while(temp!=NULL)
{
if(temp->data==num)
{
if(temp==*q)
*q=temp->link;
else
old->link=temp->link;
free(temp);
flag=1;
}
else
{
old=temp;
temp=temp->link;
}
}
if(flag==0)
printf("\n Data not found...");
else
printf("\n Data deleted...Tap a key to continue");
getch();
}
last:
getch();
}
Sample output:
PROGRAM TO IMPLEMENT SINGLY LINKED LIST
---------------------------------------
1. Create/appending the list
2. Insert node at beginning
3. Insert node in middle
4. Deleting a node
5. Counting the no. of nodes
6. Displaying the list
7. Exit
Enter your choice : Enter any number : 12
Entr more (y/n) : y
Enter any number : 23
Entr more (y/n) : y
Enter any number : 34
Enter more (y/n) :n
Enter your choice :6
12
23
34
Enter your choice :5
The no. of nodes are 3
Enter your choice :4
Enter the data u want to delete : 25
Data not found...
Enter your choice :3
Enter the data position : 2
Enter the data : 00
Data Inserted
Enter your choice :6
12
23
0
34
Enter your choice :7
Quiting.......
Comments
Post a Comment