用c语言生成学生会组织人员管理系统基本要求:存储结构采用孩子兄弟表示法
时间: 2024-04-21 11:27:45 浏览: 18
好的,以下是一个简单的用 C 语言实现的学生会组织人员管理系统,采用孩子兄弟表示法:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 20
#define MAX_CHILDREN 10
typedef struct TreeNode {
char name[MAX_NAME_LENGTH];
struct TreeNode *parent;
struct TreeNode *child;
struct TreeNode *sibling;
} TreeNode;
TreeNode *create_node(char *name) {
TreeNode *node = (TreeNode*)malloc(sizeof(TreeNode));
if (node == NULL) {
printf("Out of memory!\n");
exit(1);
}
strncpy(node->name, name, MAX_NAME_LENGTH);
node->parent = NULL;
node->child = NULL;
node->sibling = NULL;
return node;
}
void add_child(TreeNode *parent, TreeNode *child) {
child->parent = parent;
child->sibling = parent->child;
parent->child = child;
}
void print_tree(TreeNode *node, int depth) {
int i;
for (i = 0; i < depth; i++) {
printf(" ");
}
printf("%s\n", node->name);
TreeNode *child = node->child;
while (child != NULL) {
print_tree(child, depth + 1);
child = child->sibling;
}
}
int main() {
TreeNode *root = create_node("学生会");
TreeNode *node1 = create_node("主席");
TreeNode *node2 = create_node("副主席");
TreeNode *node3 = create_node("部长");
TreeNode *node4 = create_node("会员");
add_child(root, node1);
add_child(root, node2);
add_child(root, node3);
add_child(root, node4);
TreeNode *node5 = create_node("宣传部长");
TreeNode *node6 = create_node("文艺部长");
add_child(node3, node5);
add_child(node3, node6);
print_tree(root, 0);
return 0;
}
```
这个程序实现了一个简单的学生会组织人员管理系统,其中每个节点表示一个人员角色。每个节点包括一个名称和三个指针:父节点、第一个孩子节点和兄弟节点。使用 `create_node` 函数创建新节点,使用 `add_child` 函数将一个节点作为另一个节点的子节点添加到树中,使用 `print_tree` 函数打印整棵树。