1. //////////////////////////////////////////////////////////////
////////// -: Singly Link list :- /////////
////////////////////////////////////////////////////////////
/* reference : Understandng pointer though c - Y karnetkar.
*/
//////////////////////////////////////////////////////////
////////// Programmer : Harsh chandra ///////////
////////////////////////////////////////////////////////
# 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 in_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()
{ struct node *p; /* p can be said as the head or a start ptr */
p=NULL;
/* Printing the menu */
int num,loc;
char choice;
do
{ clrscr();
printf("PROGRAM TO IMPLEMENT SINGLY LINKED LIST ");
printf("n=====================================");
printf("nn1.Create Appending The List");
printf("n2.Insert Node At Begining");
printf("n3.Insert Node In Middle");
printf("n4.Deleting a Node");
printf("n5.Counting The No Of Nodes");
printf("n6.Displaying the list");
printf("n7.Exit");
oper:
gotoxy(1,15);printf(" ");
gotoxy(1,11);printf("nnEnter ur Choice : ");
choice=getch();
switch(choice)
{ case '1':
char ans;
do
{ printf("Enter any number : ");
scanf("%d",&num);
append(&p,num);
printf("Enter more (y/n) :");
fflush(stdin);
ans=getchar();
}while(ans !='n');
break;
case '2':
2. printf("Enter The Data : ");
scanf("%d",&num);
in_begin(&p,num);
break;
case '3':
printf("nEnter The Position :");
scanf("%d",&loc);
printf("nEnter The Data : ");
scanf("%d",&num);
in_middle(&p,loc,num);
break;
case '4':
printf("nEnter The Data u Want To Delete : ");
scanf("%d",&num);
del(&p,num);
break;
case '5':
printf("nThe No Of Nodes Are %d",count(p));
getch();
break;
case '6':
display(p);
getch();
break;
case '7':
printf("nnQuiting.......");
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;
}
3. 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("nnEmpty 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 in_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; /* pointing to the first node */
}
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("nnLink List Is Empty.Can't Insert.");
getch();