You are on page 1of 4

#include <stdio.

h>
#include<stdlib.h>
struct node
{
int data;
struct node*next;
};
struct node*head,*newnode,*temp;

void insert_beg(struct node**head)


{
newnode =(struct node*)malloc(sizeof(struct node));
printf("\nEnter the data to be stored at beginning:");
scanf("%d",&newnode->data);
newnode->next=*head;
*head=newnode;
}

void insert_particular(struct node**head)


{
int pos,i=1;
printf("\nEnter the position after which data to be stored:");
scanf("%d",&pos);
newnode =(struct node*)malloc(sizeof(struct node));
printf("\nEnter the data to be stored:");
scanf("%d",&newnode->data);
temp=*head;
while(i<pos)
{
temp=temp->next;
i++;
}
newnode->next=temp->next;
temp->next=newnode;
}

void insert_end(struct node**head)


{
newnode =(struct node*)malloc(sizeof(struct node));
printf("\nEnter the data to be stored at end:");
scanf("%d",&newnode->data);
newnode->next=0;
temp=*head;
while(temp->next!=0)
{
temp=temp->next;
}
temp->next=newnode;
}

void display(struct node**head)


{
temp=*head;
while(temp != 0)
{
printf("\n%d",temp->data);
temp=temp->next;
}
}
void delete_beg(struct node**head)
{
temp=*head;
*head=temp->next;
free(temp);
printf("First node is deleted");
}

void delete_particular(struct node**head)


{
struct node*prev_node;
int pos=0;
int i=1;
printf("Enter the position of node to be deleted:");
scanf("%d",&pos);
temp=*head;
while(i<pos)
{
prev_node=temp;
temp=temp->next;
i++;
}
prev_node->next=temp->next;
free(temp);
}

void delete_end(struct node**head)


{
struct node*prev_node;
temp=*head;
while(temp->next!=0)
{
prev_node=temp;
temp=temp->next;
}
prev_node->next=0;
free(temp);
printf("Last node is deleted");
}

int search(struct node**head)


{
int element=0;
printf("The element to be searched:");
scanf("%d",&element);
temp=*head;
while(temp!=0)
{
if(temp->data==element)
return 1;
temp=temp->next;
}
return 0;
}

int main()
{
head=0;
int choice=1;
while(choice)
{
newnode =(struct node*)malloc(sizeof(struct node));
printf("Enter the data to be stored:");
scanf("%d",&newnode->data);
newnode->next=0;
if(head==0)
{
head=temp=newnode;
}
else
{
temp->next=newnode;
temp=newnode;
}
printf("Do you want to continue(0/1):");
scanf("%d",&choice);
}
temp=head;
while(temp != 0)
{
printf("\n%d",temp->data);
temp=temp->next;
}
printf("\n1.Insert at beginning\n2.Insert at a particular place\n3.Insert at
last\n4.Display\n5.Delete at beginning\n6.Delete at particular place\n7.Delete at
last\n8.Search an element\n9.Exit");
int option=0;
while(option!=9)
{
printf("\nEnter the option:");
scanf("%d",&option);
switch(option)
{
case 1:
{

insert_beg(&head);
break;
}
case 2:
{
insert_particular(&head);
break;
}
case 3:
{
insert_end(&head);
break;
}
case 4:
{
display(&head);
break;
}
case 5:
{
delete_beg(&head);
break;
}
case 6:
{
delete_particular(&head);
break;
}
case 7:
{
delete_end(&head);
break;
}
case 8:
{
int n=search(&head);
printf("%d",n);
break;
}
case 9:
{
printf("\nExit");
break;
}
default:
{
printf("Enter a valid choice");
}
}
}
}

You might also like