IMPLEMENTATION OF LINKED LIST(TRAVERESE,INSERT,DELETE)

#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