Linked List Insertion at Begin, Insertion at End, Insertion at Position
Program:
#include<stdlib.h>
#include <stdio.h>
void create();
void display();
void insert_at_begin();
void insert_at_end();
void insert_at_position();
struct node
{
int data;
struct node *next;
};
struct node *head=NULL;
int main()
{
int choice;
while(1){
printf("\n 1.Create \n");
printf("\n 2.Display \n");
printf("\n 3.Insert at the beginning \n");
printf("\n 4.Insert at the end \n");
printf("\n 5.Insert at specified position \n");
printf("\n 6.Exit \n");
printf("\n--------------------------------------\n");
printf("Enter your choice:\t");
scanf("%d",&choice);
switch(choice)
{
case 1:
create();
break;
case 2:
display();
break;
case 3:
insert_at_begin();
break;
case 4:
insert_at_end();
break;
case 5:
insert_at_position();
break;
case 6:
exit(0);
break;
default:
printf("Invalid choice");
break;
}
}
return 0;
}
void create()
{
struct node *newnode,*temp;
newnode=(struct node *)malloc(sizeof(struct node));
if(newnode==NULL)
{
printf("\nOut of Memory Space:\n");
exit(0);
}
printf("\nEnter the data value for the node:\t");
scanf("%d",&newnode->data);
newnode->next=NULL;
if(head==NULL)
{
head=newnode;
}
else
{
temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=newnode;
}
}
void display()
{
struct node *temp;
if(head==NULL)
{
printf("\nList is empty:\n");
return;
}
else
{
temp=head;
printf("\nThe List elements are:\n");
while(temp!=NULL)
{
printf("%d\t",temp->data );
temp=temp->next ;
}
}
}
void insert_at_begin()
{
struct node *newnode;
newnode=(struct node *)malloc(sizeof(struct node));
if(newnode==NULL)
{
printf("\nOut of Memory Space:\n");
return;
}
printf("\nEnter the data value for the node:\t" );
scanf("%d",&newnode->data);
newnode->next =NULL;
if(head==NULL)
{
head=newnode;
}
else
{
newnode->next=head;
head=newnode;
}
}
void insert_at_end()
{
struct node *newnode,*temp;
newnode=(struct node *)malloc(sizeof(struct node));
if(newnode==NULL)
{
printf("\nOut of Memory Space:\n");
return;
}
printf("\nEnter the data value for the node:\t" );
scanf("%d",&newnode->data);
newnode->next =NULL;
if(head==NULL)
{
head=newnode;
}
else
{
temp=head;
while(temp->next !=NULL)
{
temp=temp->next ;
}
temp->next =newnode;
}
}
void insert_at_position()
{
struct node *temp,*newnode;
int i,pos;
newnode=(struct node *)malloc(sizeof(struct node));
if(newnode==NULL)
{
printf("\nOut of Memory Space\n");
return;
}
printf("\nEnter the position for the new node to be inserted:\t");
scanf("%d",&pos);
printf("\nEnter the data value of the node:\t");
scanf("%d",&newnode->data) ;
newnode->next=NULL;
if(pos==0)
{
newnode->next=head;
head=newnode;
}
else
{
for(i=0,temp=head;i<pos-1;i++) { temp=temp->next;
if(temp==NULL)
{
printf("\nInvalid Position!!!\n");
return;
}
}
newnode->next =temp->next ;
temp->next=newnode;
}
}
.png)
.png)
Comments
Post a Comment