用c语言单链表实现实现一个简单的学生信息管理系统,该系统的功能有: 1.利用单链表建立学生基本信息表; 2.浏览每个学生的信息; 3.根据学号查询某个学生的基本信息; 4.添加学生信息到单链表中; 5、删除一个学生的信息。
时间: 2024-09-18 11:08:23 浏览: 49
在C语言中,我们可以使用结构体和指针来创建一个简单的单链表学生信息管理系统。首先,我们定义一个`Student`结构体来存储学生的属性,如姓名(name)、学号(id)等。然后,创建链表相关的数据结构,包括`Node`表示链表节点,以及`List`作为链表头。
```c
typedef struct Node {
char name[50];
int id;
struct Node* next;
} StudentNode;
typedef struct List {
StudentNode* head;
} StudentList;
```
接下来,分别实现各个功能:
1. **建立学生基本信息表**:
- 定义一个函数`addStudentToList(StudentList*, char*, int)`,接受链表头指针、姓名和学号,创建新的节点并插入链表。
2. **浏览学生信息**:
- `displayStudentInfo(StudentList*)`遍历链表,打印每个学生的姓名和学号。
3. **根据学号查询学生**:
- `searchStudentById(StudentList*, int)`接收学号,从链表中查找对应的学生信息。
4. **添加学生信息**:
```c
void addStudent(StudentList* list, char* name, int id) {
StudentNode* newNode = (StudentNode*)malloc(sizeof(StudentNode));
newNode->name = malloc(strlen(name) + 1);
strcpy(newNode->name, name);
newNode->id = id;
newNode->next = list->head;
list->head = newNode;
}
```
5. **删除学生信息**:
- `deleteStudentByID(StudentList*, int id)`接受学号,找到对应的节点并删除它。
```c
void deleteStudent(StudentList* list, int id) {
if (list->head == NULL) return;
StudentNode* curr = list->head;
if (curr->id == id) {
list->head = curr->next;
free(curr);
return;
}
while (curr->next != NULL && curr->next->id != id) {
curr = curr->next;
}
if (curr->next != NULL) {
curr->next = curr->next->next;
free(curr->next);
}
}
```
阅读全文