用结构数组仿树形结构

/**
* 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;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值