树的双亲表示法(C语言实现)——树的存储结构

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef char DataType;

//	数组结点
typedef struct TNode 
{
	DataType data;	//	数据域 
	int parent;		//	双亲在数组中的下标 

}TNode;

typedef struct
{
	TNode tree[MaxSize];	//	数组内存静态分配 
	int NodeNum;			//	记录树结点个数 

}Tree; 

void Creat_Tree(Tree * T); 				//	创建树 
void Search_Node(Tree * T, char ch);	//	搜查某个结点以及它的父结点 

int main()
{
	Tree T;
	
	Creat_Tree(&T);
	Search_Node(&T, 'B');
	
	return 0;
} 

void Creat_Tree(Tree * T)
{
	int i;
	
	printf("请输入数组结点个数:");
	scanf("%d",&(T->NodeNum));
	
	for(i=0; i<T->NodeNum; ++i)
	{
		fflush(stdin);	//	清空输入缓冲区
		printf("请输入第%d个数组结点的数据域:",i+1);
		scanf("%c",&(T->tree[i].data));
		printf("请输入第%d个结点的双亲结点在数组中的下标:",i+1); 
		scanf("%d", &(T->tree[i].parent));
		printf("\n");
	}
	
	return;
} 

//	搜查某个结点以及它的父结点
void Search_Node(Tree * T, char ch)
{
	int i;
	int flag = 0;
	
	for(i=0; i<T->NodeNum; ++i)
	{
		if(T->tree[i].data==ch)
		{
			flag = 1;
			printf("你所搜查的结点:%c\n",T->tree[i].data);
			printf("其父结点:%c\n", T->tree[T->tree[i].parent].data);
			break;
		}
	}
	
	if(!flag)
		printf("没找到!\n");
} 

猜你喜欢

转载自blog.csdn.net/Mr_Morgans/article/details/121003524