用结构数组仿树形结构
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;
}
}
* 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;
}
}
相关文章推荐
- 将Json数组转换为树形结构生成菜单列表
- 优先队列,由于优先队列的树形结构是完全二叉树,所以可以使用数组的形式去存储,我的上一个博客是用二叉树的形式去存储优先队列的
- javascript实现扁平数组构建树形结构(多级菜单应用)-优化
- js将对象数组中具有父子关系的数据换成树形结构
- 前端实现下拉框联动,数组封装成树形结构实现下拉框联动
- POJ 3321 Apple Tree 【树形结构转变为线性结构+线段树OR树状数组】
- [置顶] 一位数组返回id和pid通过这两个参数转换为树形结构数据,和树形结构的渲染
- C语言结构体内含有数组,该结构体作为参数传递时需用指针,否则对数组的修改不会被记录
- 黑马程序员-C语言基础之结构体数组
- 树形结构的数据存储和数据库表设计
- 指针,数组和结构
- #数据结构与算法学习笔记#剑指Offer1:二维数组中的查找(JAVA)
- 打印蛇形数组——两种结构
- C++基础知识复习--结构体类数组作为函数参数
- 38. C# -- 常量\枚举\结构及数组的运用
- (转).NET平台下Web树形结构程序设计
- Ajax树形结构;Ajax自动完成功能,最近Ajax学习的成果
- 结构体数组初始化
- 常见的线性列表结构---【数组、链表、栈、队列、堆】
- 数组与结构