树的存储结构-双亲表示法-代码

来源:互联网 发布:剑灵天女短发捏脸数据 编辑:程序博客网 时间:2024/05/17 21:39

概述:存储结构(顺序存储,链式存储)
顺序存储结构:用一段地址连续的存储单元依次存储结点,但是结点的位置都无法反应逻辑关系。
充分利用顺序存储和链式存储结构的特点,完全可以实现对树的存储结构的表示,三种不同的表示法:双亲表示法,孩子表示法,孩子兄弟法。

双亲表示法:
结点结构:data parent
data是数据域,存储结点的数据信息
parent 是指针域,存储该结点的双亲在数组中的下标
结点结构定义代码:

#define MAX_TREE_SIZE 100typedef char TElemType;/*树结点的数据类型,目前暂定为整型*/typedef struct PTNode //结点结构{    TElemType data;//结点数据    int parent;//双亲位置}PTNode;typedef struct{    PTNode nodes[MAX_TREE_SIZE];//结点数组    int r,n;//根的位置和结点数}PTree;

由于根结点没有双亲,所以约定根结点的位置域设置为-1

树和结点数组的表示

int main(){    PTree tree;    cout<<"请输入双亲表示法中树根的位置"<<endl;    cin>>tree.r;    cout<<"请输入双亲表示法中树结点个数"<<endl;    cin>>tree.n;    cout<<"请输入双亲表示法中树结点结构"<<endl;    for(int i=0;i<tree.n;i++)    {        cin>>tree.nodes[i].data>>tree.nodes[i].parent;    }    cout<<"index"<<"\t"<<"data"<<"\t"<<"parent"<<endl;    for(int i=0;i<tree.n;i++)    {        cout<<i<<"\t"<<tree.nodes[i].data<<"\t"  <<tree.nodes[i].parent<<endl;    }    system("pause");    return 0;}

这里写图片描述

0 0
原创粉丝点击