您的位置:首页 > 其它

用结构数组仿树形结构

2006-09-18 11:28 218 查看
/**
* StructTreeArray.c
* version1.0 2006-9-18
* wrtite by jsp
* 用结构数组仿树形结构
*/
#include"stdio.h"
//StructTreeArray
struct StructTree
{
int left;
int data;
int right;
};

void creat(int *inData,struct StructTree *sTree,int len)
{
int i;
int lay;

sTree[0].data = inData[0];

for(i = 1; i < len; i++)
{
sTree[i].data = inData[i];
lay = 0;
for(lay = 0 ; lay < i; )
{
if(sTree[i].data < sTree[lay].data) //判断是否是左子树
{
if(sTree[lay].left == -1)
{
sTree[lay].left = i;
break;
}
else
{
lay = sTree[lay].left;
}
}

else //判断是否是右子树
{
if(sTree[lay].right == -1)
{
sTree[lay].right = i;
break;
}
else
{
lay = sTree[lay].right;
}
}
}
}

}

void main()
{
struct StructTree sTree[16];//结构数组用于存放tree的有关信息
int inputData[16];//用于输入的数组
int data;
int index ;//用于输入数组的的变量
int i;//循环变量
//初始化输入数组
for(i = 0; i < 16; i++)
{
inputData[i] = 0;
}

printf("Intput Tree data:/n");

//输入数据并存入输入数组
index = 0;
do
{
scanf("%d",&data);
if(data != 0)
{
inputData[index] = data;
index += 1;
}
}while(data != 0);
//初始化结构数组
for(i = 0; i < 16 ; i++)
{
sTree[i].left = -1;
sTree[i].data = 0;
sTree[i].right = -1;
}

creat(inputData,sTree,index);

printf("print Tree DATA:/n");
printf("INDEX/tLEFT/tDATA/tRIGHT/n");
index = 0;
//打印出TREE
while(sTree[index].data != 0)
{
printf("%2d/t[%2d]/t[%2d]/t[%2d]/n",index,sTree[index].left,sTree[index].data,sTree[index].right);
index += 1;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: