C语言指针实现链表操作示例代码

需积分: 1 7 下载量 185 浏览量 更新于2024-09-24 收藏 4KB TXT 举报
"C语言指针链表例子源码,适合初学者学习,包含创建、打印和删除链表节点的功能" 这个资源是一个简单的C语言程序,用于演示如何使用指针操作链表数据结构。链表是一种动态数据结构,它在内存中不连续存储,通过每个节点的指针连接起来。在这个例子中,链表被用来存储学生信息,每个节点(`struct stu_inf`)包含学生的学号(`num`)和姓名(`name`)。 首先,我们定义了一个结构体`struct stu_inf`,其中包含了两个成员:`num`(整型)和`name`(字符数组),以及一个指向下一个节点的指针`next`。结构体定义了链表节点的结构,使得我们可以链接多个节点形成链表。 `creat()`函数是用于创建链表的。它首先初始化`head`(链表头)为`NULL`,然后使用`malloc()`动态分配内存来创建新的节点。`scanf()`函数用于从用户输入中读取学号和姓名,然后将这些信息存储在新创建的节点中。链表的构建是通过不断读取用户输入并创建新节点,直到遇到一个学号为0的记录(通常用作终止标志)。最后,`free(p1)`释放最后一个未使用的节点,`p2->next=NULL`设置最后一个节点的`next`指针为`NULL`,表示链表的结尾。 `print()`函数用于打印链表中的所有记录。它遍历链表,对于每个节点,打印其学号和姓名,直到链表结束(即`p!=NULL`)。 `del()`函数实现了删除指定学号的学生记录。它首先检查链表是否为空,如果为空则直接返回。接着,遍历链表,找到要删除的节点(`num!=p1->num&&p1->next!=NULL`),在找到目标节点之前,将前一个节点的指针`p2->next`更新为当前节点`p1`,以便于后续删除操作。当找到目标节点时,如果它是链表的第一个节点(`head`),则更新`head`为第二个节点;否则,`p2->next`直接指向目标节点的下一个节点。最后,释放目标节点的内存并返回更新后的链表头。 这个源码示例对于理解C语言中的指针操作和链表的基本操作非常有帮助,包括节点的创建、插入、遍历和删除。它展示了如何使用指针变量作为链表节点之间的链接,并且演示了动态内存管理的重要性,如`malloc()`和`free()`的使用。通过这个例子,初学者可以深入理解C语言中数据结构的基础知识。