数据结构(c语言的实现)利用链表实现一个简单的学生信息管理系统: (1)学生信息包括学号、姓名、性别、年龄、电话号码、所学专业、班级等; (2)系统的主要功能包括:学生信息的创建、输出学生信息、查询学生信息、增加学生信息、删
时间: 2024-11-05 15:28:08 浏览: 28
数据结构在C语言中利用链表实现学生信息管理系统的步骤如下:
1. 定义结构体:首先创建一个名为`Student`的结构体,包含学号(如`int id`)、姓名(`char name[50]`)、性别(`enum Gender { MALE, FEMALE } gender`)、年龄(`int age`)、电话(`char phone[20]`)、专业(`char major[50]`)、班级(`char class[50]`)等成员。
```c
typedef struct {
int id;
char name[50];
enum Gender gender;
int age;
char phone[20];
char major[50];
char class_[50];
} Student;
```
2. 链表操作:定义一个指向`Student`类型的指针作为链表节点,并实现链表的基本操作,如创建头结点、插入节点、删除节点以及遍历链表。
```c
typedef struct Node {
Student data;
struct Node* next;
} Node;
// 创建新节点
Node* createNode(Student student) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = student;
newNode->next = NULL;
return newNode;
}
// 插入节点到链表
void insertNode(Node** head, Student student) {
Node* newNode = createNode(student);
if (*head == NULL) {
*head = newNode;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 删除指定学号的节点
void deleteNode(Node** head, int id) {
if (*head == NULL) return;
if ((*head)->data.id == id) {
Node* temp = *head;
*head = (*head)->next;
free(temp);
return;
}
Node* current = *head;
while (current->next != NULL && current->next->data.id != id) {
current = current->next;
}
if (current->next != NULL) {
Node* toDelete = current->next;
current->next = current->next->next;
free(toDelete);
}
}
// 遍历链表输出学生信息
void printStudents(Node* head) {
Node* current = head;
while (current != NULL) {
printf("学号:%d,姓名:%s,性别:%s,年龄:%d,电话:%s,专业:%s,班级:%s\n",
current->data.id, current->data.name, genderToString(current->data.gender), current->data.age,
current->data.phone, current->data.major, current->data.class_);
current = current->next;
}
}
```
3. 主函数:提供用户界面,接受输入并调用相应的链表操作。
```c
int main() {
// 初始化链表为空
Node* head = NULL;
// ...其他用户交互处理
return 0;
}
```
阅读全文