数据结构C语言,利用链表实现一个简单的学生信息管理系统: (1)学生信息包括学号、姓名、性别、年龄、电话号码、所学专业、班级等; (2)系统的主要功能包括:学生信息的创建、输出学生信息、查询学生信息、增加学生信息、删除学生信息。
时间: 2024-11-17 13:30:22 浏览: 20
在C语言中,我们可以使用链表数据结构来构建一个简易的学生信息管理系统。首先,我们需要定义一个包含学生所有属性的节点结构体:
```c
typedef struct {
int student_id; // 学号
char name[50]; // 姓名
char gender[10]; // 性别
int age; // 年龄
char phone_number[20]; // 电话号码
char major[50]; // 所学专业
char class_name[50]; // 班级
struct node* next; // 指向下一个节点的指针
} StudentNode;
```
接下来,我们创建链表头结点并实现基本操作:
1. **创建学生信息**:动态分配内存,填充学生的属性,然后添加到链表尾部。
```c
void createStudent(StudentNode** head, int id, const char* name, ... /* 其他属性 */) {
StudentNode* newNode = (StudentNode*)malloc(sizeof(StudentNode));
newNode->student_id = id;
strncpy(newNode->name, name, sizeof(newNode->name) - 1);
// ... 动态赋值其他属性
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
StudentNode* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
```
2. **输出学生信息**:遍历链表,打印每个学生的详细信息。
```c
void printStudentInfo(StudentNode* head) {
while (head != NULL) {
printf("学号:%d, 姓名:%s, ...", head->student_id, head->name);
// 输出其他属性
head = head->next;
}
}
```
3. **查询学生信息**:通过学号查找特定学生的信息。
```c
StudentNode* findStudentById(StudentNode* head, int id) {
StudentNode* current = head;
while (current != NULL) {
if (current->student_id == id) {
return current;
}
current = current->next;
}
return NULL;
}
```
4. **增加学生信息**:同上,创建新节点并添加到链表中。
5. **删除学生信息**:找到指定学号的节点,更新前一个节点的next指向。
阅读全文