在C语言中如何使用单链表实现职工信息管理系统的添加、删除、查询、排序和修改功能?请提供相关的示例代码。
时间: 2024-12-04 11:17:30 浏览: 25
实现职工信息管理系统的功能,关键在于理解单链表的数据结构以及对应的算法。为了帮助你更深刻地理解和掌握这些知识点,建议先阅读提供的资料《C语言实现的职工信息管理系统源代码》,其中包含了完整的系统实现细节和源代码。
参考资源链接:[C语言实现的职工信息管理系统源代码](https://wenku.csdn.net/doc/5mdc7b62d7?spm=1055.2569.3001.10343)
首先,定义职工信息的结构体:
```c
typedef struct employee {
char name[20]; // 职工姓名
int num; // 职工工号
char sex[10]; // 职工性别
char bm[20]; // 职工部门
char zc[20]; // 职工职称
float gz; // 职工工资
} employee;
typedef struct Node {
employee data; // 数据域
struct Node *next; // 指针域
} Node;
```
接着,实现添加职工信息的功能:
```c
Node* add(Node *head, employee data) {
Node *newNode = (Node*)malloc(sizeof(Node));
if (newNode) {
newNode->data = data;
newNode->next = head;
head = newNode;
}
return head;
}
```
实现删除指定职工信息的功能:
```c
Node* deleteNode(Node *head, int num) {
Node *current = head, *previous = NULL;
while (current != NULL && current->data.num != num) {
previous = current;
current = current->next;
}
if (current == NULL) return head;
if (previous == NULL) {
head = current->next;
} else {
previous->next = current->next;
}
free(current);
return head;
}
```
查询职工信息的功能:
```c
employee* query(Node *head, int num) {
Node *current = head;
while (current != NULL) {
if (current->data.num == num) {
return ¤t->data;
}
current = current->next;
}
return NULL;
}
```
实现链表排序(按照姓名排序示例):
```c
Node* sort(Node *head) {
if (head == NULL || head->next == NULL) return head;
Node *current, *index;
for (current = head; current != NULL; current = current->next) {
for (index = current->next; index != NULL; index = index->next) {
if (strcmp(current->data.name, index->data.name) > 0) {
employee temp = current->data;
current->data = index->data;
index->data = temp;
}
}
}
return head;
}
```
修改职工信息的功能:
```c
void modify(Node *head, int num, employee newData) {
employee *target = query(head, num);
if (target != NULL) {
*target = newData;
}
}
```
以上代码展示了如何使用C语言和单链表实现职工信息管理系统的核心功能。请确保在实际编写代码时进行相应的错误检查和内存管理。阅读完整资料《C语言实现的职工信息管理系统源代码》可以帮你更好地理解系统的其他辅助功能以及如何将这些功能组合起来,构建一个完整的职工信息管理系统。
参考资源链接:[C语言实现的职工信息管理系统源代码](https://wenku.csdn.net/doc/5mdc7b62d7?spm=1055.2569.3001.10343)
阅读全文