数据结构_树_孩⼦表⽰法(C语⾔)树的孩⼦表⽰法
1、结构解析
树的孩⼦表⽰法包括顺序表和链表两种结构,也可以说是顺序表和链表的结合结构,如图:
2、源代码:
#include<stdio.h>
#include<stdlib.h>
鲁班秘籍#define MAX 20
typedef struct CNode //孩⼦结点
{
int pos;//孩⼦位置
struct CNode *next;//孩⼦指针
}CNode,*PChild;
typedef struct//根结点
{
工程合作协议书
char data;//根结点数据域
PChild child;//孩⼦链表
}CTRoot;
typedef struct//顺序表结构
{
CTRoot Node[MAX];
int sum;//根结点数
}SqCTree,*CTree;
void InitCTree(CTree &CT)//初始化树
{
CT =(SqCTree *)malloc(sizeof(SqCTree));
炒酸菜的做法CT->sum =0;
for(int i =0; i< MAX; i++)//初始化数组的每个孩⼦结点
{
CT->Node[i].child =(CNode *)malloc(sizeof(CNode));
初学者画眼睛CT->Node[i].child->next =NULL;
CT->Node[i].child->next =NULL;
}
printf("初始化!\n");
}
void CreateCTree(CTree &CT)//创建树
{
printf("请输⼊结点数:");
scanf("%d",&CT->sum);
fflush(stdin);
int n;
char ch;
for(int i =0; i < CT->sum; i++)
{
printf("请输⼊第%d个结点数据及孩⼦数和孩⼦位置:",i);
人的本质scanf("%c",&ch);
CT->Node[i].data = ch;
scanf("%d",&n);
黄芪精颗粒
PChild p = CT->Node[i].child;
for(int j =0; j < n; j++)//插⼊孩⼦结点
{
PChild s;
s =(CNode *)malloc(sizeof(CNode));
scanf("%d",&s->pos);
s->next =NULL;
p->next = s;
p = p->next;蜀相赏析
}
fflush(stdin);
}
}
void LevelOrderTraver(CTree CT)//层序遍历
{
for(int i =0; i < CT->sum; i++)
printf("%c ", CT->Node[i].data);
printf("\n");
}
int main()
{
CTree CT;
InitCTree(CT);
CreateCTree(CT);
printf("\n层序遍历:");
LevelOrderTraver(CT);从化温泉哪里好
return0;
}