#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct node{
int value;
float num;
struct node *next;
} nod;
nod *creat();
void print(nod *head);
nod *del(nod *head);
nod *add(nod *head);
int main(void)
{
nod *head=creat();
print(head);
head=del(head);
print(head);
head=add(head);
print(head);
}
nod *creat()
{
nod *head=NULL;
nod *p1,*p2;
p1=p2=(nod *)malloc(sizeof(nod));
scanf("%d%f",&p1->value,&p1->num);
p1->next=NULL;
while(p1->value!=-1)
{
if(head==NULL)
{
head=p1;
}
else
{
p2->next=p1;
}
p2=p1;
p1=(nod*)malloc(sizeof(nod));
scanf("%d%f",&p1->value,&p1->num);
}
p2->next=NULL;
return head;
}
void print(nod *head)
{
nod *next=head;
if(head==NULL)
{
printf("NULL\n");
}
while(next)
{
printf("%d %f\n",next->value,next->num);
next=next->next;
}
}
nod *del(nod *head)
{
int num;
scanf("%d",&num);
nod *p1,*p2;
p1=p2=head;
if(head==NULL)
{
printf("THE LIST IS NULL\n");
}
else
{
if(head->value==num)
{
head=head->next;
}
else
{
int isfound=0;
while(p1!=NULL)
{
p2=p1;
p1=p1->next;
if(p1->value==num)
{
isfound=1;
break;
}
}
if(isfound==0)
{
printf("NOT FOUND THE NUM\n");
}
else
{
if(p1->next==NULL)
{
p2->next=NULL;
}
else
{
p2->next=p1->next;
}
}
}
}
return head;
}
nod *add(nod *head)
{
nod *p1,*p2,*p3;
p1=p2=head;
p3=(nod*)malloc(sizeof(nod));
scanf("%d%f",&p3->value,&p3->num);
p3->next=NULL;
p1=p2=head;
if(head->value>p3->value)
{
head=p3;
p3->next=p1;
}
else
{
int isfound=0;
while(p1->next!=NULL)
{
p2=p1;
p1=p1->next;
if(p1->value>p3->value)
{
isfound=1;
break;
}
}
if(isfound==0)
{
p1->next=p3;
}
else
{
p2->next=p3;
p3->next=p1;
}
}
return head;
}