用dev c++以 typedef struct { int num; /学号 char name[10]; /姓名 } student;为结构体创建一个二叉树
时间: 2023-06-26 11:04:53 浏览: 151
下面是使用 `typedef struct` 创建二叉树的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _node {
int num;
char name[10];
struct _node *left;
struct _node *right;
} TreeNode, *TreeNodePtr;
TreeNodePtr createNode(int num, char name[]) {
TreeNodePtr node = (TreeNodePtr) malloc(sizeof(TreeNode));
node->num = num;
strcpy(node->name, name);
node->left = NULL;
node->right = NULL;
return node;
}
void insert(TreeNodePtr *root, TreeNodePtr node) {
if (*root == NULL) {
*root = node;
} else if (node->num < (*root)->num) {
insert(&(*root)->left, node);
} else {
insert(&(*root)->right, node);
}
}
void inorder(TreeNodePtr root) {
if (root != NULL) {
inorder(root->left);
printf("%d %s\n", root->num, root->name);
inorder(root->right);
}
}
int main() {
TreeNodePtr root = NULL;
int n;
printf("Enter the number of students: ");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int num;
char name[10];
printf("Enter the student's number and name: ");
scanf("%d %s", &num, name);
TreeNodePtr node = createNode(num, name);
insert(&root, node);
}
printf("Inorder traversal of the binary tree:\n");
inorder(root);
return 0;
}
```
在这个示例中,我们使用 `typedef struct` 定义了一个名为 `TreeNode` 的结构体,其中包含了学号和姓名两个字段,以及左右子节点的指针。我们还定义了一个指向 `TreeNode` 结构体的指针类型 `TreeNodePtr`。
然后我们实现了 `createNode` 函数,用于创建一个新的节点,并将学号和姓名赋值给节点的对应字段。我们还实现了 `insert` 函数,用于将新节点插入到二叉树中的正确位置。最后,我们实现了 `inorder` 函数,用于中序遍历二叉树并输出每个节点的学号和姓名。
在 `main` 函数中,我们首先从用户输入中读取学生数量 `n`,然后循环 `n` 次,每次读取一个学号和姓名,并调用 `createNode` 和 `insert` 函数,将新节点插入到二叉树中。最后,我们调用 `inorder` 函数,输出中序遍历结果。
阅读全文