利用链表实现一个简单的学生信息管理系统: (1)学生信息包括学号、姓名、性别、年龄、电话号码、所学专业、班级等; (2)系统的主要功能包括:学生信息的创建、输出学生信息、查询学生信息、增加学生信息、删除学生信息。 通过c语言实现
时间: 2024-10-23 20:06:53 浏览: 62
在C语言中,我们可以使用结构体(struct)来表示学生信息,并利用链表的数据结构来管理和操作这些信息。首先,我们定义一个学生结构体:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int student_id; // 学号
char name[50]; // 姓名
char gender[10]; // 性别
int age; // 年龄
char phone[20]; // 电话号码
char major[50]; // 所学专业
char class_name[50]; // 班级
} Student;
typedef struct Node {
Student info;
struct Node* next;
} Node;
// 链表头结点
Node* head = NULL;
```
接下来,我们实现链表的基本操作:
1. **创建学生信息**:
```c
void createStudent(Student* new_student, char* name, ...){
va_list args;
va_start(args, name);
strncpy(new_student->name, name, sizeof(new_student->name));
// ... 获取并赋值其他字段,如va_arg(args, int)获取年龄等
va_end(args);
}
```
2. **输出学生信息**:
```c
void displayStudent(Node* node) {
printf("学号: %d, 姓名: %s, 性别: %s, 年龄: %d, 电话: %s, 专业: %s, 班级: %s\n",
node->info.student_id, node->info.name, node->info.gender, node->info.age,
node->info.phone, node->info.major, node->info.class_name);
}
```
3. **查询学生信息**:
```c
Node* searchStudent(int id) {
Node* current = head;
while (current != NULL && current->info.student_id != id) {
current = current->next;
}
return current;
}
```
4. **增加学生信息**:
```c
void addStudent(Student* new_student) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->info = *new_student;
newNode->next = head;
head = newNode;
}
```
5. **删除学生信息**:
```c
void deleteStudent(int id) {
if (head == NULL) return;
if (head->info.student_id == id) {
Node* temp = head;
head = head->next;
free(temp);
return;
}
Node* current = head;
while (current->next != NULL && current->next->info.student_id != id) {
current = current->next;
}
if (current->next != NULL) {
Node* temp = current->next;
current->next = current->next->next;
free(temp);
}
}
```
阅读全文