C语言构建一个用二叉链表存储一个公司组织机构的相关数据的程序,假设该公司的下属分支都只有两个分支,且公司的上下级关系为第一层级为总经理,第二层级为副总经理、第三层级为部门经理、第四层级为科室。其中设每个数据结点的数据项内容包括:部门的名称、负责人姓名
时间: 2024-11-10 08:26:43 浏览: 18
在C语言中,我们可以创建一个简单的二叉链表结构来表示公司的组织机构。首先,我们需要定义一个结构体`OrganizationNode`来包含部门名称和负责人姓名,以及指向左子节点和右子节点的指针:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义组织节点结构
typedef struct {
char department[50]; // 部门名称
char manager[50]; // 负责人姓名
struct OrganizationNode* left; // 左子节点
struct OrganizationNode* right; // 右子节点
} OrganizationNode;
// 创建新节点函数
OrganizationNode* createNode(char department[], char manager[]) {
OrganizationNode* newNode = (OrganizationNode*)malloc(sizeof(OrganizationNode));
if (newNode) {
strncpy(newNode->department, department, sizeof(newNode->department));
strncpy(newNode->manager, manager, sizeof(newNode->manager));
newNode->left = newNode->right = NULL;
}
return newNode;
}
int main() {
// 初始化示例数据
char topManager[] = "总经理";
char assistantManager[] = "副总经理";
char depManager[] = "部门经理";
char secManager[] = "科室经理";
// 创建顶级节点,代表总经理
OrganizationNode* CEO = createNode(topManager, "张三");
// 创建一级子节点,代表副总经理
OrganizationNode* assistant = createNode(assistantManager, "李四");
CEO->left = assistant;
// 创建二级子节点,代表部门经理
OrganizationNode* deptA = createNode(depManager, "王五");
OrganizationNode* deptB = createNode(depManager, "赵六");
assistant->left = deptA;
assistant->right = deptB;
// 如果需要添加更多层级,只需递归地在适当的位置创建更多的节点
printf("组织机构:\n");
printOrganizationalTree(CEO); // 自定义打印树形结构的函数
return 0;
}
// 打印组织树形结构的辅助函数
void printOrganizationalTree(OrganizationNode* node) {
if (node != NULL) {
printf("%s -> %s\n", node->manager, node->department);
printOrganizationalTree(node->left);
printOrganizationalTree(node->right);
}
}
```
在这个例子中,我们首先创建了一个顶层节点,然后通过左右子节点链接到下一层级。如果你想添加更多的组织层次,只需要在适当位置复制这个模式,并更新相应节点的信息即可。
阅读全文