Link List
Link List
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *link;
};
struct node *first,*last;
struct node mknode(int item);
void delete(int pos);
void delete_end();
void delete_beg();
void display(struct node *x);
void insert(int pos,int x);
void insert_begin(int x);
void insert_end(int x);
int main()
{
int ch,x,pos;
first=last=NULL;
while(1)
{
printf("\n -----------------------------------------------");
printf("\n 1.Insertion at beginning of linked list ");
printf("\n 2.Insertion at a given position of list ");
printf("\n 3.Insertion at the end of the linked list ");
printf("\n 4.Delete from the beginning of the list ");
printf("\n 5.Delete from a given position of list ");
printf("\n 6.Delete from end of the list ");
// printf("\n 7.Search for a node in the list ");
printf("\n 8.Display all the elements from the list ");
printf("\n 9.Exit ");
printf("\n -----------------------------------------------");
printf("\n Your choice:");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("\n Number to insert at beginning :");
scanf("%d",&x);
insert_begin(x);
break;
case 2:
printf("\n Location number to insert the node :");
scanf("%d",&pos);
printf("\n Number to insert :");
scanf("%d",&x);
insert(pos,x);
break;
case 3:
printf("\n Number to insert at the end :");
scanf("%d",&x);
insert_end(x);
break;
case 4:
// printf("\n Delete from the beginning of the linked list :");
if(first!=NULL)
delete_beg();
else
printf("\n Empty List \n");
break;
case 5:
printf("\n Location number of the node to be deleted :");
scanf("%d",&pos);
delete(pos);
break;
case 6:
if(first!=NULL)
delete_end();
break;
/* case 7:
printf("\n Enter node data to be searched :");
scanf("%d",&x);
search(x);
break; */
case 8:
display(first);
break;
case 9:
exit(1);
} /* End of switch */
} /* End of while */
return 0;
} /* End of main */
last=curr;
}
void delete(int pos)
{
int i;
struct node *p;
p=first;
if(pos==1)
first=first->link;
else
{
i=2;
while(i<pos && p!=NULL)
{
p=p->link;
i++;
}
p->link=p->link->link;
}
}
void display(struct node *p)
{
printf("\n Nodes in the list \n");
while(p!=NULL)
{
printf("%d->",p->data);
p=p->link;
}
printf("NULL");
}
void insert_begin(int x)
{
struct node *new;
int i;
new=(struct node*)malloc(sizeof(struct node));
new->data=x;
new->link=first;
first=new;
void insert_end(int x)
{
struct node *p,*new;
new=(struct node*)malloc(sizeof(struct node));
new->data=x;
new->link=NULL;
p=first;
while(p->link!=NULL)
{
p=p->link;
}
p->link=new;
}
void delete_end()
{
struct node *p,*q;
p=first;
q=first->link;
if(first==NULL)
printf("\n Empty List ");
else if(first->link==NULL)
{
printf("\n Deleted data %d",first->data);
first=first->link;
}
else
{
while(q->link!=NULL)
{
p=q;
q=q->link;
}
printf("\n %d ",q->data);
p->link=q->link;
}
}
void delete_beg()
{
int x;
x=first->data;
printf("\n I location deleted value %d",first->data);
first=first->link;
}