#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}node;
void insert(node *pointer, int data)
{
while(pointer->next!=NULL)
{
pointer = pointer -> next;
}
pointer->data = data;
pointer->next = (node *)malloc(sizeof(node));
pointer = pointer->next;
pointer->next = NULL;
}
void print(node *pointer)
{
if(pointer->next==NULL)
{
return;
}
printf("%d ",pointer->data);
print(pointer->next);
}
int main()
{
int i,ch,place,value;
node *start,*temp;
start = (node *)malloc(sizeof(node));
temp = start;
temp -> next = NULL;
printf("\nEnter 5 nodes\n");
for(i=1;i<=5;i++)
{
int data;
scanf("%d",&data);
insert(temp,data);
}
printf("The list is ");
print(start);
printf("\n");
printf("enter 1 for insert and 2 for delete\n");
scanf("%d",&ch);
if (ch==1)
{
printf("enter the data to be inserted\n");
scanf("%d",&value);
printf("enter the data value after which node is to be inserted;enter 0 to enter at the start\n");
scanf("%d",&place);
insertion(start,place,value);
}
if (ch==2)
{
printf("enter the data to be deleted\n");
scanf("%d",&value);
deletion(start,value);
}
return 0;
}
void insertion(node *start,int place,int value)
{
node *newnode;
newnode=(node *)malloc(sizeof(node));
newnode->data=value;
newnode->next=NULL;
if(start==NULL)
{
start=newnode;
printo(start);
return;
}
if (place==0)
{
newnode->next=start;
start=newnode;
print(start);
return;
}
node *temp1;
temp1=start;
while(temp1->next!=NULL)
{
if(temp1->data==place)
{
newnode->next=temp1->next;
temp1->next=newnode;
print(start);
return;
}
else
{
temp1=temp1->next;
}
}
temp1->data=value;
temp1->next=NULL;
printo(start);
return;
}
void deletion(node *start,int value)
{
if(start==NULL)
{
printf("empty list\n");
return;
}
node *temp,*prev;
temp=start;
prev=start;
while(temp!=NULL)
{
if(temp->data==value)
{
if(temp==start)
{
start=temp->next;
free(temp);
print(start);
return;
}
else
{
prev->next=temp->next;
free(temp);
print(start);
return;
}
}
else
{
prev=temp;
temp=temp->next;
}
}
printf("value not found\n");
}
void printo(node *pt)
{
printf("%d ",pt->data);
if(pt->next==NULL)
return;
pt=pt->next;
printo(pt);
}
Comments
Post a Comment