使用c语言建立一函数,动态建立链表输入五个学生的学号,姓名和成绩 ,然后再删除其中学号为m的学生结点。
定义链表结构,循环输5个学生信息,遍历链表删除指定学号的节点
#include <stdio.h>
typedef struct _linknode
{
int num;
char name[20];
float score;
struct _linknode *next;
}linknode,*linklist;
void creat(linklist L)
{
int i=0;
linklist p = L,q=NULL;
for(i=0;i<5;i++)
{
q = (linklist)malloc(sizeof(linknode));
scanf("%d%s%f",&q->num,q->name,&q->score);
q->next = NULL;
p->next = q;
p = q;
}
}
void remove(linklist L,int m)
{
linklist p = L,q;
while(p->next != NULL)
{
if(p->next->num == m)
{
q = p->next;
p->next = q->next;
free(q);
break;
}
p = p->next;
}
}
int main()
{
//使用c语言建立一函数,动态建立链表输入五个学生的学号,姓名和成绩 ,然后再删除其中学号为m的学生结点
linknode head;
int m;
head.next = NULL;
creat(&head);
scanf("%d",&m);
remove(&head,m);
return 0;
}