#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct numST)
struct numST
{
int num;
struct numST *next;
};
void insert(struct numST **phead,struct numST*p)
{
struct numST *q,*r;
if((*phead)==NULL)
{
*phead=p;
return;
}
else
{
if((*phead)->num>p->num)
{
p->next=*phead;
*phead=p;
return;
}
r=*phead;
q=(*phead)->next;
while(q!=NULL)
{
if(q->num<p->num)
{
r=q;
q=q->next;
}
else
break;
}
r->next=p;
p->next=q;
}
}
void print(struct numST *head)
{
int k=0;
struct numST*r;
r=head;
while (r!=NULL)
{
k=k+1;
printf("%d %d\n",k,r->num);
r=r->next;
}
}
void del(struct numST *head,int num)
{
struct numST *q,*r;
q=head;
if(head->next==NULL)
{
printf("no number !");
return ;
}
while(q->num!=num&&q!=NULL)
{
r=q;
q=q->next;
}
if(q->num==num)
{
r->next=q;
free(q);
}
else
return ;
}
int main()
{
struct numST*head,*p;
head=NULL;
head =malloc(LEN);
head->next=malloc(LEN);
head->num=5;
head->next->num=10;
head->next->next=NULL;
p=malloc(LEN);
p->num=8;
p->next=NULL;
insert(&head,p);
print(head);
del(head,5);
print(head);
return 0;
}