用c语言键盘读入字符(数字、字母或其他符号)建立一个深度不小于3层的树的孩子兄弟表存储结构
时间: 2023-06-18 08:03:08 浏览: 277
以下是一个示例代码,实现了键盘读入字符并建立孩子兄弟表存储结构的功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 孩子兄弟表存储结构
typedef struct TreeNode {
char data;
struct TreeNode *first_child; // 指向第一个孩子节点
struct TreeNode *next_sibling; // 指向下一个兄弟节点
} TreeNode;
// 创建一个新节点
TreeNode* create_node(char data) {
TreeNode *new_node = (TreeNode*)malloc(sizeof(TreeNode));
new_node->data = data;
new_node->first_child = NULL;
new_node->next_sibling = NULL;
return new_node;
}
// 插入一个节点作为指定节点的第一个孩子节点
void insert_first_child(TreeNode *node, TreeNode *child) {
child->next_sibling = node->first_child;
node->first_child = child;
}
// 插入一个节点作为指定节点的下一个兄弟节点
void insert_next_sibling(TreeNode *node, TreeNode *sibling) {
sibling->next_sibling = node->next_sibling;
node->next_sibling = sibling;
}
// 根据输入字符建立树结构
TreeNode* build_tree() {
char c = getchar();
if (c == '\n' || c == EOF) {
return NULL;
}
TreeNode *node = create_node(c);
node->first_child = build_tree();
node->next_sibling = build_tree();
return node;
}
// 打印树的结构
void print_tree(TreeNode *root, int depth) {
if (root == NULL) {
return;
}
for (int i = 0; i < depth; i++) {
printf(" ");
}
printf("%c\n", root->data);
print_tree(root->first_child, depth+1);
print_tree(root->next_sibling, depth);
}
int main() {
printf("请输入一些字符来建立树的结构(以回车结束):\n");
TreeNode *root = build_tree();
printf("建立的树的结构如下:\n");
print_tree(root, 0);
return 0;
}
```
使用方法:编译运行上述代码,然后在控制台输入一些字符,以回车结束。程序将会根据输入字符建立树的结构,并输出该树的结构。注意,该树的深度不小于3层,因为每个节点都有两个指针分别指向其第一个孩子节点和下一个兄弟节点。
阅读全文