You are on page 1of 14

1.

Linked List {Insert, Delete, IsFull, IsEmpty, Display}


#include <stdio.h>

#include <stdlib.h>

struct node

int data;

struct node *link;

};

struct node *create_list(struct node *start);

void display(struct node *start);

struct node *addatbeg(struct node *start,int data);

void addatend(struct node *start,int data);

void addafter(struct node *start,int data,int item);

void addbefore(struct node *start,int data,int item );

void addatpos(struct node *start,int data,int pos);

struct node *del(struct node *start,int data);

void isEmpty(struct node *start);

void isFull(struct node *start);

int main(){

printf("This program is created by Sachin Kumar Shah 0827AL201047\


n\n");

struct node *start=NULL;


int choice,data,item,pos;

while(1)

printf("1.Create List\n");

printf("2.Display\n");

printf("3.Add at beginning\n");

printf("4.Add at end\n");

printf("5.Add after node\n");

printf("6.Add before node\n");

printf("7.Add at position\n");

printf("8.Delete\n");

printf("9.isEmpty\n");

printf("10.isFull\n");

printf("11.Exit\n");

printf("Enter your choice : ");

scanf("%d",&choice);

switch(choice)

case 1:

start=create_list(start);

break;
case 2:

display(start);

break;

case 3:

printf("Enter the element to be inserted : ");

scanf("%d",&data);

start=addatbeg(start,data);

break;

case 4:

printf("Enter the element to be inserted : ");

scanf("%d",&data);

addatend(start,data);

break;

case 5:

printf("Enter the element to be inserted : ");

scanf("%d",&data);

printf("Enter the element after which to insert : ");

scanf("%d",&item);

addafter(start,data,item);

break;

case 6:

printf("Enter the element to be inserted : ");

scanf("%d",&data);
printf("Enter the element before which to insert : ");

scanf("%d",&item);

addbefore(start,data,item);

break;

case 7:

printf("Enter the element to be inserted : ");

scanf("%d",&data);

printf("Enter the position at which to insert : ");

scanf("%d",&pos);

addatpos(start,data,pos);

break;

case 8:

printf("Enter the element to be deleted : ");

scanf("%d",&data);

start=del(start, data);

break;

case 9:

isEmpty(start);

break;

case 10:

isFull(start);

case 11:

exit(1);
default:

printf("Wrong choice\n");

struct node *create_list(struct node *start)

int i,n,data;

printf("Enter the number of nodes : ");

scanf("%d",&n);

start=NULL;

if(n==0)

return start;

printf("Enter the element to be inserted : ");

scanf("%d",&data);

start=addatbeg(start,data);

for(i=2;i<=n;i++)

printf("Enter the element to be inserted : ");

scanf("%d",&data);
addatend(start,data);

return start;

void display(struct node *start)

struct node *p;

if(start==NULL)

printf("List is empty\n");

return;

p=start;

printf("List is :\n");

while(p!=NULL)

printf("%d ",p->data);

p=p->link;

printf("\n\n");

}
struct node *addatbeg(struct node *start,int data)

struct node *tmp;

tmp=(struct node *)malloc(sizeof(struct node));

tmp->data=data;

tmp->link=start;

start=tmp;

return start;

void addatend(struct node *start,int data)

struct node *p,*tmp;

tmp=(struct node *)malloc(sizeof(struct node));

tmp->data=data;

p=start;

while(p->link!=NULL)

p=p->link;

p->link=tmp;

tmp->link=NULL;

}
void addafter(struct node *start,int data,int item)

struct node *tmp,*p;

p=start;

while(p!=NULL)

if(p->data==item)

tmp=(struct node *)malloc(sizeof(struct node));

tmp->data=data;

tmp->link=p->link;

p->link=tmp;

p=p->link;

printf("%d not present in the list\n",item);

void addbefore(struct node *start,int data,int item)

struct node *tmp,*p;

if(start==NULL )
{

printf("List is empty\n");

if(item==start->data)

tmp=(struct node *)malloc(sizeof(struct node));

tmp->data=data;

tmp->link=start;

start=tmp;

p=start;

while(p->link!=NULL)

if(p->link->data==item)

tmp=(struct node *)malloc(sizeof(struct node));

tmp->data=data;

tmp->link=p->link;

p->link=tmp;
}

p=p->link;

printf("%d not present in the list\n",item);

void addatpos(struct node *start,int data,int pos)

struct node *tmp,*p;

int i;

tmp=(struct node *)malloc(sizeof(struct node));

tmp->data=data;

if(pos==1)

tmp->link=start;

start=tmp;

p=start;

for(i=1; i<pos-1 && p!=NULL; i++)

p=p->link;

if(p==NULL)

printf("There are less than %d elements\n",pos);


else

tmp->link=p->link;

p->link=tmp;

struct node *del(struct node *start,int data)

struct node *tmp,*p;

if(start==NULL)

printf("List is empty\n");

return start;

if(start->data==data)

tmp=start;

start=start->link;

free(tmp);

return start;

}
p=start;

while(p->link!=NULL)

if(p->link->data==data)

tmp=p->link;

p->link=tmp->link;

free(tmp);

return start;

p=p->link;

printf("Element %d not found\n",data);

void isEmpty(struct node *start){

if (start==NULL)

printf("List is empty\n");

}
void isFull(struct node *start){

struct node *temp;

if (start!=NULL)

printf("list is full\n");

Output-

You might also like