本人双非一本计算机系小白,几个月前从化学天坑跳到计算机,希望本系列能监督我练习敲数据结构的代码(在家真的效率好低QAQ),参考了《大话数据结构》和鄙校的数据结构教材(不敢恭维)。
目前为止我还没有在大学正式上过一节计算机专业课(除了c编基础公共必修),如果有大佬翻到本文并觉得我的代码写的是一坨,提前感谢您在评论区帮我指正!!!
本次练习了树的存储结构以及二叉树的结构
#include<stdio.h>
#define MAX_TREE_SIZE 100
//双亲表示法
typedef int TElemType;
typedef struct PTNode //结点结构,一个存放数据,一个存放父结点的位置
{
TElemType data;
int parent;
}PTNode;
typedef struct //树结构
{
PTNode nodes[MAX_TREE_SIZE];
int r, n; //根的位置和结点数
}PTree;
/*--------------------------------------------------*/
//孩子表示法
typedef struct CTNode //孩子结点
{
int child;
struct CTNode *next;
} *ChildPtr;
typedef struct //表头结构
{
TElemType data;
ChildPtr* FirstChild;
}CTbox;
typedef struct //树结构
{
CTbox nodes[MAX_TREE_SIZE];
int r, n; //根的位置和结点数
}CTree;
/*--------------------------------------------------*/
//孩子兄弟表示法
typedef struct CSNode
{
TElemType data;
struct CSNode *firstchild, *rightsib; //定义孩子和右兄弟结点
}CSNode, *CSTree;
/*--------------------------------------------------*/
//二叉树的二叉链表
typedef struct BiTNode
{
TElemType data;
struct BiTNode *Lchild, *Rchild;
}BiTNode, *BiTree;