树的存储和图的存储结构总结

目录标题

#define max_size 100

//双亲表示法
struct Node{
	int data;

	int parent;//记录父节点再数组的位置
};

struct Tree {
	Node TreeArr[max_size];
	int n;//节点数
};
//孩子表示法
struct childNode {
	int childIndex;
	childNode* nextChild;
};
struct firstChild {
	int data;
	childNode* FChild;

};
struct Tree {
	firstChild nodes[max_size];
	int n;//节点数
	int root;//根的位置
};
//孩子兄弟表示法
struct ChildBrotherNode {
	int data;
	ChildBrotherNode* firstChild;
	ChildBrotherNode* nextBrother;
};

/*


graph的存储结构


*/

//邻接矩阵法

struct graph {
	char vex[max_size];//定点表
	int edge[max_size][max_size];
	int vernum;//顶点个数和弧的个数
	int arcnum;


};
//邻接表法
struct ArcNode {//弧
	int adjvex;//所指向的定点
	ArcNode* next;//下一条弧
};

struct HNode {//顶点
	int data;
	ArcNode* firstArc;//指向第一个弧

};

struct graph {
	HNode* vertices[max_size];
	int vernum;
	int arcnum;//弧的个数
};
//十字链表法

struct ArcNode {
	int info;
	int tailvex;//用来存储尾号
	int headvex;//用来存储弧头
	ArcNode* hlink;//弧头相同的下一条弧
	ArcNode* tlink;//弧尾相同的下一条弧
};

struct VerNode{
	int data;
	ArcNode* headArc;//指向该节点作为弧头的第一条弧
	ArcNode* tailArc;//指向该节点作为弧尾的第一条弧
};

struct graphList {
	VerNode* VerList[max_size];
	int vernum;//顶点的个数
	int arcnum;//弧的个数
};
//邻接多重表
struct ArcNode {
	int i;//i和j表示两个链接的点的位置
	int j;
	int info;
	ArcNode* iLink;
	ArcNode* jLink;
};

struct verNode
{
	int data;
	ArcNode* fistEdge;
};

struct graphList {
	verNode* gList[max_size];
	int vernum;
	int arcnum;
};
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肥学

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值