C语言实现链表创建与删除操作

需积分: 13 0 下载量 59 浏览量 更新于2024-09-18 收藏 2KB TXT 举报
该资源是关于使用C语言实现链表数据结构的程序,涉及链表的建立和删除操作。在程序中定义了链表节点结构`LNode`,包含学号`num`(长度为11)、姓名`name`(长度为21)、成绩`score`和指向下一个节点的指针`next`。此外,还定义了一个结构体`LinkList`来存储链表的头节点、尾节点和长度。程序提供了创建链表节点的`MakeNode_L`函数和初始化链表的`InitList`函数,以及创建链表的`CreatList`函数。 详细说明: 1. **链表节点定义**:`LNode` 结构体用于定义链表中的节点,每个节点包含一个整型变量`score`,两个字符数组`num`和`name`,以及一个指向下一个节点的指针`next`。这些字段用于存储学号、姓名和成绩信息。 2. **指针类型定义**:`Link` 和 `*Link` 分别是结构体 `LNode` 的指针类型,它们被用作函数参数和链表操作中的指针。 3. **状态枚举**:`Status` 是一个枚举类型,包含两个值 `OK` 和 `ERROR`,分别表示操作成功和失败。 4. **链表结构体定义**:`LinkList` 结构体包含了链表的头节点`head`、尾节点`tail`以及链表的长度`len`。这个结构体用于管理整个链表的状态。 5. **MakeNode_L 函数**:此函数用于创建一个新的链表节点。它接受一个指向链表节点指针的指针`p`和一个要插入的元素`e`,如果创建成功,它将返回 `OK`,并使 `*p` 指向新创建的节点。 6. **InitList 函数**:初始化链表,接受一个 `LinkList` 类型的指针`p`。该函数会创建一个空链表,将头节点和尾节点设置为同一个节点,并将链表长度设置为0。 7. **CreatList 函数**:创建链表,接受一个 `LinkList` 类型的指针`p`。用户通过输入学号、姓名和成绩来添加节点。当用户输入负分数时,链表添加操作终止。每个新节点通过调用 `MakeNode_L` 函数创建,然后添加到链表中。 8. **输入处理**:在 `CreatList` 函数中,使用 `gets` 和 `scanf` 函数从用户那里获取学号、姓名和成绩信息。`ch=getchar()` 用于读取用户输入后留下的换行符。 通过以上函数,用户可以构建一个包含学生信息的链表,并能根据用户输入动态添加节点。然而,程序中没有提供删除节点的功能,这需要另外编写相应的函数来完成。同时,为了保证程序的健壮性,还需要考虑错误处理和内存管理,例如检查内存分配是否成功,以及在不再需要节点时释放其内存。