C语言,删除结构体学生信息

在C语言中,可以通过数组或链表来存储学生信息并实现删除操作。下面将详细介绍如何在链表中删除特定学生的信息,包括初始化链表、添加节点、删除节点和打印链表内容的过程。

结构体定义

首先,定义一个表示学生信息的结构体:

c
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Student { int id; char name[50]; struct Student* next; } Student;

添加学生信息

创建一个函数用于添加学生信息到链表中:

c
Student* addStudent(Student* head, int id, const char* name) { Student* newStudent = (Student*)malloc(sizeof(Student)); newStudent->id = id; strcpy(newStudent->name, name); newStudent->next = head; return newStudent; }

删除学生信息

创建一个函数用于删除链表中具有特定ID的学生信息:

c
Student* deleteStudent(Student* head, int id) { Student* current = head; Student* previous = NULL; // 如果链表为空 if (head == NULL) { printf("List is empty.\n"); return NULL; } // 检查头节点是否是要删除的节点 if (current != NULL && current->id == id) { head = current->next; free(current); printf("Student with ID %d deleted.\n", id); return head; } // 遍历链表寻找要删除的节点 while (current != NULL && current->id != id) { previous = current; current = current->next; } // 如果没有找到节点 if (current == NULL) { printf("Student with ID %d not found.\n", id); return head; } // 删除节点 previous->next = current->next; free(current); printf("Student with ID %d deleted.\n", id); return head; }

打印学生信息

创建一个函数用于打印链表中的所有学生信息:

c
void printStudents(Student* head) { Student* current = head; while (current != NULL) { printf("ID: %d, Name: %s\n", current->id, current->name); current = current->next; } }

主函数

在主函数中初始化链表、添加和删除学生信息并打印链表内容:

c
int main() { Student* head = NULL; // 添加学生信息 head = addStudent(head, 1, "Alice"); head = addStudent(head, 2, "Bob"); head = addStudent(head, 3, "Charlie"); printf("Student list:\n"); printStudents(head); // 删除学生信息 head = deleteStudent(head, 2); printf("\nStudent list after deletion:\n"); printStudents(head); // 清理内存 while (head != NULL) { Student* temp = head; head = head->next; free(temp); } return 0; }

详细解释

  1. 定义结构体:创建一个表示学生信息的结构体,包含学生ID、姓名和指向下一个学生的指针。
  2. 添加学生信息:创建一个函数用于向链表头部添加新的学生信息。
  3. 删除学生信息:创建一个函数用于删除链表中具有特定ID的学生节点。
  4. 打印学生信息:创建一个函数用于遍历链表并打印所有学生的信息。
  5. 主函数:在主函数中,演示如何添加和删除学生信息,并打印链表内容。

总结

该示例展示了如何在C语言中使用链表存储和删除学生信息,包括初始化链表、添加节点、删除节点和打印节点内容的实现。

关键字

C语言,结构体,学生信息,链表,删除节点,添加节点,打印链表,动态内存分配