简单的C语言关于链表操作

c语言链表操作怎么用啊,刚学不太懂。对于输入的若干学生的信息(学号、姓名、年龄),要求使用链表完成:还要在中间插入和删除。

img

img

img

供参考:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node {
    char num[10];  //学号
    char name[10]; //姓名
    int  age;      //年龄
    struct node* next;
}Lnode, * LinkNode;
void creatlist(LinkNode* L, int n)
{
    int i;
    LinkNode pt;
    for (i = 0; i < n; i++) {
        pt = (LinkNode)malloc(sizeof(Lnode));
        pt->next = NULL;
        scanf("%s %s %d", pt->num, pt->name, &pt->age);
        pt->next = (*L);
        (*L) = pt;
    }
}
void insertlist(LinkNode L, LinkNode pt, int i, int n)
{
    int k = 0;
    if (i < 1 || i > n) return;
    LinkNode p = L;
    while (p && k < i - 1) {
        k++;
        p = p->next;
    }
    pt->next = p->next;
    p->next = pt;
}
void deletelist(LinkNode* L, char* s_num)
{
    LinkNode p = (*L), pre = NULL;
    while (p) {
        if (strcmp(p->num, s_num) == 0) {
            if (p == (*L)) {
                (*L) = p->next;
                free(p);
                p = (*L);
            }
            else {
                pre->next = p->next;
                free(p);
                p = pre;
            }
        }
        else {
            pre = p;
            p = p->next;
        }
    }
}
void printlist(LinkNode L)
{
    LinkNode p = L;
    while (p) {
        printf("%s %s %d\n", p->num, p->name, p->age);
        p = p->next;
    }
}
int main()
{
    int T, n, m;
    scanf("%d", &T);//输入正整数 T
    while (T--) {
        char num[10] = { 0 };//待删除学生的学号
        LinkNode L = NULL, pt = NULL;
        scanf("%d", &n);//输入正整数 n ,表示 n 个学生 
        creatlist(&L, n); //输入 n 行学生信息,创建链表 
        pt = (LinkNode)malloc(sizeof(Lnode));
        pt->next = NULL;
        scanf("%d %s %s %d", &m, pt->num, pt->name, &pt->age);//输入m 和一个新学生的信息
        scanf("%s", num); //输入待删除学生的学号
        printlist(L);    //以下开始依次输出描述中要求的学生信息
        insertlist(L, pt, m, n);
        printlist(L);
        deletelist(&L, num);
        printlist(L);
    }
    return 0;
}

我的博客有一篇链表的文章,你可以参考一下。

数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633