typedef struct student
{
int num;
int score;
char name[20];
struct student *next;
}STU;
void link_creat_head(STU **p_head,STU *p_new)
{
STU *p_mov = *p_head;
if(*p_head == NULL)
{
*p_head = p_new;
p_new->next=NULL;
}
else
{
while(p_mov->next!=NULL)
{
p_mov=p_mov->next;
}
p_mov->next = p_new;
p_new->next = NULL;
}
}
void link_print(STU *head)
{
STU *p_mov;
p_mov = head;
while(p_mov!=NULL)
{
printf("num=%d score=%d name:%s\n",p_mov->num,\
p_mov->score,p_mov->name);
p_mov = p_mov->next;
}
}
void link_free(STU **p_head)
{
STU *pb=*p_head;
while(*p_head!=NULL)
{
pb=*p_head;
*p_head=(*p_head)‐>next;
free(pb);
pb = NULL;
}
}
STU * link_search_num(STU *head,int num)
{
STU *p_mov;
p_mov=head;
while(p_mov!=NULL)
{
if(p_mov->num == num)
{
return p_mov;
}
p_mov=p_mov->next;
}
return NULL;
}
STU * link_search_name(STU *head,char *name)
{
STU *p_mov;
p_mov=head;
while(p_mov!=NULL)
{
if(strcmp(p_mov->name,name)==0)
{
return p_mov;
}
p_mov=p_mov->next;
}
return NULL;
}
void link_delete_num(STU **p_head,int num)
{
STU *pb,*pf;
pb=pf=*p_head;
if(*p_head == NULL)
{
printf("链表为空,没有您要删的节点");\
return ;
}
while(pb->num != num && pb->next !=NULL)
{
pf=pb;
pb=pb->next;
}
if(pb->num == num)
{
if(pb == *p_head)
{
*p_head = pb->next;
}
else
{
pf->next = pb->next;
}
free(pb);
pb = NULL;
}
else
{
printf("没有您要删除的节点\n");
}
}
void link_insert_num(STU **p_head,STU *p_new)
{
STU *pb,*pf;
pb=pf=*p_head;
if(*p_head ==NULL)
{
*p_head = p_new;
p_new->next=NULL;
return ;
}
while((p_new->num >= pb->num) && (pb->next !=NULL) )
{
pf=pb;
pb=pb->next;
}
if(p_new->num < pb->num)
{
if(pb== *p_head)
{
p_new->next= *p_head;
*p_head =p_new;
}
else
{
pf->next=p_new;
p_new->next = pb;
}
}
else
{
pb->next =p_new;
p_new->next =NULL;
}
}
int main()
{
STU *head = NULL,*p_new = NULL;
p_new = (STU*)malloc(sizeof(STU));
link_creat_head(&head,p_new);
}