You are on page 1of 4

#include <stdio.

h>
#include <stdlib.h>

struct node
{
int data;
struct node *next;
};
typedef struct node node;

void deletenode(node *f,int value);


int insert(node *p,int value);
node *first;
int main()
{
node *ptr;
int ask,value,dv,i=0;

while(1)
{
printf("\nEXIT:0, NEW:1, ,DELETE:2, PRINT:3, ENTER: ");
scanf("%d",&ask);
if(ask ==0)
return 0;

else if(ask==1)
{
printf("Enter a value:");
scanf("%d",&value);
if(i==0)
{
first =(node*)malloc(sizeof(node));
first->data=value;
first->next=NULL;
i=1;
}
else if(i!=0)
{
insert(first,value);
}

else if(ask==3)
{
ptr = first;
while(ptr!=NULL)
{
printf(" %d",ptr->data);
ptr=ptr->next;
}
}
else if(ask==2)
{
printf("Enter a value for DELETE:");
scanf("%d",&dv);
deletenode(first,dv);
}
else
{
printf("Enter again!\n");
}
}
return 0;
}

int insert(node *p,int value)


{
node *newnode;
newnode =(node*)malloc(sizeof(node));
if(newnode ==NULL)
return 0;

newnode->data=value;
newnode->next=p;
first=newnode;
return 1;
}

void deletenode(node *f, int value)


{

node *temp;
node *follow;
temp =(node*)malloc(sizeof(node));
follow =(node*)malloc(sizeof(node));
temp = f;
if (f == NULL)
{
printf("%d dones't exist",value);
return;
}

if(f->data == value)
{
temp = f->next;
*f = *temp;
free(temp);
return;
}

while((temp != NULL) && (temp->data != value))


{
follow = temp;
temp = temp->next;
}

if(temp == NULL)
{
printf("%d dones't exist",value);
return;
}
else
{
follow->next = temp->next;
free(temp);
return;
}

You might also like