数据结构C语言实现双亲表示的代码
时间: 2024-10-24 09:09:15 浏览: 16
数据结构家族谱管理系统C语言源代码
在C语言中,实现双亲表示法通常涉及到树形数据结构,特别是二叉树。这种表示方法下,每个节点都有两个指针,分别指向其父节点和左、右子节点。下面是一个简单的示例,展示了如何用结构体和指针来表示二叉树的节点:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int data; // 节点值
struct TreeNode* parent; // 父节点指针
struct TreeNode* left; // 左子节点指针
struct TreeNode* right; // 右子节点指针
} TreeNode;
// 创建新节点
TreeNode* createNode(int value) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
newNode->data = value;
newNode->parent = NULL;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点到二叉树的双亲表示中
void insert(TreeNode** root, int value) {
if (*root == NULL) {
*root = createNode(value);
} else if (value < (*root)->data) {
insert(&(*root)->left, value);
} else {
insert(&(*root)->right, value);
}
}
// 示例:打印前序遍历
void printPreorder(TreeNode* node) {
if (node != NULL) {
printf("%d ", node->data); // 先访问根节点
printPreorder(node->left); // 再访问左子树
printPreorder(node->right); // 最后访问右子树
}
}
int main() {
TreeNode* root = NULL;
insert(&root, 50);
insert(&root, 30);
insert(&root, 70);
insert(&root, 40);
insert(&root, 60);
printf("Preorder traversal of the tree:\n");
printPreorder(root);
return 0;
}
```
在这个例子中,`insert`函数用于添加新节点到树中,`printPreorder`则用于按照双亲表示法的前序遍历打印节点。需要注意的是,这只是一个基础的示例,实际应用中可能需要处理更多复杂情况,如释放内存等。
阅读全文