使用c语言建立动态链表

使用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;
}