#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 50
typedef struct Snode { char data; int parent; }PNode; typedef struct { PNode tnode[MAX_SIZE]; int n; }Ptree; Ptree initptree(Ptree tree) { int i, j; char ch; printf("请输入节点个数\n"); scanf("%d", &(tree.n)); printf("请输入节点符号和节点下标\n"); for (i = 0; i < tree.n; i++) { getchar();//吸收上面scanf残留的换行符 scanf("%c %d", &ch, &j); tree.tnode[i].data = ch; tree.tnode[i].parent = j; } return tree; } void findparent(Ptree tree) { int temp = 0; char a; printf("请输入你要查询的节点\n"); getchar();//吸收上面scanf残留的换行符 scanf("%c", &a); for (int i = 0; i < tree.n; i++) { if (tree.tnode[i].data == a) { temp = 1; int pa = tree.tnode[i].parent; printf("%c的父节点为%c,下标为%d", a, tree.tnode[pa].data, pa); break; } } if (temp == 0) { printf("查询不到这个父节点\n"); } } int main() { Ptree tree; //初始化 for (int i = 0; i < MAX_SIZE; i++) { tree.tnode[i].parent = -1; } tree = initptree(tree); findparent(tree); return 0; }