Singly Link List
Create
a node and insert and delete ,frist,last,middle,specific position
---------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
} ;
struct node *head=NULL ,
*newnode,*temp=NULL,*q,*s;//global declaration
void deletelast();
void deletefirst();
void deletemid();
void deletesp();
void insertfirst();
void insertlast();
void insertmid();
void insertsp();
void createnode();
void display();
void main()
{
intch;
clrscr();
do
{
printf("\n
1 . crea at first ");
printf("\n
2 . create list at last ");
printf("\n
3 . Insert at middel ");
printf("\n
4 . Insert at specific location ");
printf("\n
5 ..*..... LIST Display...........*. ");
printf("\n
6 . Delete from first ");
printf("\n
7. Delete from last ");
printf("\n
8 . Delete from middel ");
printf("\n
9 . Delete from specific location ");
printf("\n
10 . *..........Exit................ ");
printf("\n
Enter your choice............ ");
scanf("%d",&ch);
switch(ch)
{
case
1:createnode();
insertfirst();
printf("\nNode
inserted Sucessfully \n");
break;
case 2:
createnode();
insertlast();
printf("\nNode
inserted Sucessfully \n");
break;
case
3:createnode();
insertmid();
printf("\nNode
inserted Sucessfully \n");
break;
case
4:createnode();
insertsp();
break;
case
5:display();
printf("\n\n");
break;
case
6:deletefirst();
printf("\n\n");
break;
case
7:deletelast();
printf("\n\n");
break;
case
8:deletemid();
printf("\n\n");
break;
case
9:deletesp();
printf("\n\n");
break;
case
10:exit(0);
default :printf("\n\n Re enter u r choice
.......");
}
}while(1);
getch();
}
Void
createnode()
{
newnode= (struct node * )(malloc) (sizeof (struct node));
newnode->next=NULL;
printf(" Enter data ");
scanf("%d",&newnode->data);
}
//----------------------------------------------------------------
Void
insertfirst()
{
if(head==NULL)
{
}
else
{ newnode->next=head;
head=newnode;
}
}
voidinsertlast()
{
if(head==NULL)
{
head=newnode;
}
else
{
temp=head;
while(temp->next!=NULL) //reach to last node
{
temp=temp->next;
}
temp->next=newnode;
//connect newnode
}
}
//---------------------------------------------------------------------------
void insertmid()
{
intcnt=1,m,i=1;
if(head==NULL)
{
head=newnode;
}
else
{
temp=head;
while(temp->next!=NULL) //reach to last node
{
cnt++;
temp=temp->next;
}
temp=head;
m=cnt/2;
while(i<m)
{
temp=temp->next;
i++;
}
q=temp->next;
temp->next=newnode; //connect newnode
newnode->next=q;
}
}
//-----------------------------------------------------------------------------------------
void insertsp()
{
intcnt=1,p,i=1;
printf("\n\n Enter postion ");
scanf("%d",&p);
if(head==NULL)
{
printf("List is empty ...........");
}
else
{
temp=head;
while(temp->next!=NULL) //count nodes
{
cnt++;
temp=temp->next;
}
if(p>1&&p<cnt)
{
temp=head;
while(i<p)
{
temp=temp->next;
i++;
}
q=temp->next;
temp->next=newnode; //connect newnode
newnode->next=q;
printf("\nNode
inserted Sucessfully \n");
}
else
printf("\n\n
plzreEnterpostion ....");
}
}
//--------------------------------------------------------------------------------------------
void
display()
{
struct node *temp ;
temp=head;
while(temp!=NULL)
{ printf("%d ",temp->data);
temp=temp->next;
}
}
//----------------------------------------------------------------------------------
void deletefirst()
{
if (head==NULL)
printf("\n\n List is empty .......................");
else
{
temp=head;
head=temp->next;
printf(" Deleted node is---- %d----",temp->data);
free(temp);
}
}
//------------------------------------------------------------------------------------------
void deletelast()
{
if (head==NULL)
printf("\n\n List is empty .......................");
else
{
temp=head;
while(temp->next->next!=NULL)
{
temp=temp->next;
}
q=temp->next;
printf(" Deleted node is---- %d----",q->data);
free(q);
temp->next=NULL;
}
}
voiddeletemid()
{
intcnt=1,m,i=1;
if(head==NULL)
{
printf("\n\n List is empty .............");
}
else
{
temp=head;
while(temp->next!=NULL)
{
cnt++;
temp=temp->next;
}
temp=head;
m=cnt/2;
while(i<m)
{
temp=temp->next;
i++;
}
q=temp->next;
s=q->next;
printf("\n\n
Deleted Node is %d ",q->data);
free(q);
temp->next=s;
}
}
//-----------------------------------------------------------------------------------------------------
void deletesp()
{
intcnt=1,p,i=1;
printf("\n\n Enter postion ");
scanf("%d",&p);
if(head==NULL)
{
printf("List is empty ...........");
}
else
{
temp=head;
while(temp->next!=NULL) //count nodes
{
cnt++;
temp=temp->next;
}
if(p>1&&p<cnt)
{
temp=head;
while(i<p)
{
temp=temp->next;
i++;
}
q=temp->next;
s=q->next;
printf("\n\n
Deleted Node is %d ",q->data);
free(q);
temp->next=s;
}
else
printf("\n\n
plzreEnterpostion ....");
}
}