c语言通用性强的链表写管理系统
时间: 2023-05-28 17:07:24 浏览: 51
以下是一个基于C语言链表的简单管理系统示例,可以用于管理学生信息:
```C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student {
int id;
char name[20];
int age;
struct student *next;
} Student;
Student *head = NULL;
void add_student() {
Student *new_student = (Student*)malloc(sizeof(Student));
printf("Enter student id: ");
scanf("%d", &new_student->id);
printf("Enter student name: ");
scanf("%s", new_student->name);
printf("Enter student age: ");
scanf("%d", &new_student->age);
new_student->next = NULL;
if (head == NULL) {
head = new_student;
} else {
Student *current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = new_student;
}
printf("Student added successfully.\n");
}
void delete_student() {
int id;
printf("Enter student id to delete: ");
scanf("%d", &id);
if (head == NULL) {
printf("No students found.\n");
return;
}
Student *current = head;
Student *prev = NULL;
while (current != NULL && current->id != id) {
prev = current;
current = current->next;
}
if (current == NULL) {
printf("Student not found.\n");
return;
}
if (prev == NULL) {
head = current->next;
} else {
prev->next = current->next;
}
free(current);
printf("Student deleted successfully.\n");
}
void display_students() {
if (head == NULL) {
printf("No students found.\n");
return;
}
printf("ID\tName\tAge\n");
Student *current = head;
while (current != NULL) {
printf("%d\t%s\t%d\n", current->id, current->name, current->age);
current = current->next;
}
}
int main() {
int choice;
do {
printf("\n");
printf("1. Add student\n");
printf("2. Delete student\n");
printf("3. Display students\n");
printf("4. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
display_students();
break;
case 4:
printf("Exiting program...\n");
break;
default:
printf("Invalid choice.\n");
break;
}
} while (choice != 4);
return 0;
}
```
这个示例中,我们定义了一个`Student`结构体,包括学生的ID、姓名和年龄,以及一个指向下一个学生的指针。我们使用`head`指针来跟踪链表的头部。
在`add_student()`函数中,我们创建了一个新的`Student`节点,并从用户输入中获取学生的信息。然后,我们将这个新的节点添加到链表的末尾。
在`delete_student()`函数中,我们从用户输入中获取要删除的学生的ID,并遍历链表,直到找到该学生。然后,我们将该学生从链表中删除。
在`display_students()`函数中,我们遍历链表并输出每个学生的信息。
在`main()`函数中,我们使用一个循环来显示一个菜单,让用户选择要执行的操作。当用户选择退出时,程序结束。
需要注意的是,这只是一个简单的示例,实际的管理系统可能需要更多的功能和错误处理。