`
jaychang
  • 浏览: 719608 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

有向图十字链表表示及各顶点出入度计算

 
阅读更多
#include<iostream>
#define MAX_VERTEX_NUM 50
using namespace std;

//定义顶点信息数据类型
typedef char VertexData;

//定义图的种类
typedef enum{DG,UDG} GraphKind;

//定义弧结点
typedef struct ArcNode
{
	int tailvex,headvex;		//定义弧结点的弧头,弧尾在图中的位置
	ArcNode *tlink,*hlink;
}ArcNode;

//定义顶点
typedef struct VertexNode
{
	VertexData data;
	ArcNode *firstin,*firstout;
}VertexNode;

//定义有向图的十字链表
typedef struct OrthList
{
	VertexNode Vertex[MAX_VERTEX_NUM];
	int vertexNum,arcNum;		//定义顶点数,弧数
	GraphKind kind;
}OrthList;

void CreateOrthList(OrthList *orthList)
{	
	ArcNode *q=NULL;
	int s,d;					//定义弧结点的起始,目的位置
	cout<<"输入有向图的顶点数(vNum),边数(eNum)\n";
	cin>>orthList->vertexNum>>orthList->arcNum;
	orthList->kind=DG;
	//初始化十字链表顶点信息
	for(int i=1;i<=orthList->vertexNum;i++)
	{
		cout<<"输入第"<<i<<"个顶点的信息\n";
		cin>>orthList->Vertex[i].data;
		orthList->Vertex[i].firstin=NULL;
		orthList->Vertex[i].firstout=NULL;
	}
	for(i=1;i<=orthList->arcNum;i++)
	{	
		q=(ArcNode *)malloc(sizeof(ArcNode));
		cout<<"输入第"<<i<<"条边的起始(s)目的位置(d)\n";
		cin>>s>>d;
		q->tailvex=s;q->headvex=d;
		q->tlink=orthList->Vertex[s].firstout;
		orthList->Vertex[s].firstout=q;
		q->hlink=orthList->Vertex[d].firstin;
		orthList->Vertex[d].firstin=q;
	}

}

//求每个顶点的出度与入度
void GetDegree(OrthList *orthList)
{	
	ArcNode *q=NULL;
	int outDegree,inDegree;             
	for(int i=1;i<=orthList->vertexNum;i++)
	{	
		outDegree=0;inDegree=0;
		//计算顶点Vertex[i]的出度
		q=orthList->Vertex[i].firstout;
		while(q!=NULL)
		{
			outDegree++;
			q=q->tlink;
		}
		//	//计算顶点Vertex[i]的入度
		q=orthList->Vertex[i].firstin;
		while(q!=NULL)
		{
			inDegree++;
			q=q->hlink;
		}
		cout<<"顶点"<<orthList->Vertex[i].data<<"的出度为"<<outDegree<<endl;
		cout<<"顶点"<<orthList->Vertex[i].data<<"的入度为"<<inDegree<<endl<<endl;
	}
}



int main()
{	
	OrthList *orthList=(OrthList *)malloc(sizeof(OrthList));
	CreateOrthList(orthList);
	GetDegree(orthList);
	return 0;
}
 
分享到:
评论

相关推荐

    1、 掌握图的结构特征以及四种存储结构(数组表示法、邻接表、十字链表和邻接多重表)的特点和程序设计方法

    2、 按照建立一个带权有向图的操作需要,编写在邻接矩阵或邻接表存储结构下,带权有向图基本操作的实现函数(如初始化图、在图中插入一个结点、在图中插入一条边、在图中寻找序号为v的结点的第一个邻接结点、在图中...

    1、 掌握图的结构特征以及四种存储结构(数组表示法、邻接表、十字链表和邻接多重表)的特点和程序设计方法。

    2、 按照建立一个带权有向图的操作需要,编写在邻接矩阵或邻接表存储结构下,带权有向图基本操作的实现函数(如初始化图、在图中插入一个结点、在图中插入一条边、在图中寻找序号为v的结点的第一个邻接结点、在图中...

    有向图的强连通分量的求解

    十字链表可以看成是将有向图的邻接表和逆邻接表结合起来得到的一种链表。在十字链表中,对应于有向图中每一条弧有一个结点,对应于每一个顶点也有一个结点。然后建立有向图,然后利用深度优先遍历求解强连通分量

    aaa.rar_无向图 环_无向图所有环_无向图最小环_最小生成树_树所有操作

    对无向图求每个顶点的度,或对有向图求每个顶点的入度和出度(5分) 完成插入顶点和边(或弧)的功能(5分) 完成删除顶点和边(或弧)的功能(5分) 两种存储结构的转换(5分),如果其中一种存储结构为十字链表或...

    数据结构求最小生成树、最短路径、关键路径

    1、 对无向图求每个顶点的度,或对有向图求每个顶点的入度和出度(5分) 2、 完成插入顶点和边(或弧)的功能(5分) 3、 完成删除顶点和边(或弧)的功能(5分) 4、 两种存储结构的转换(5分),如果其中一种存储...

    数据结构-图的应用(邻接矩阵、邻接多重表)

    对无向图求每个顶点的度,或对有向图求每个顶点的入度和出度(5分) 完成插入顶点和边(或弧)的功能(5分) 完成删除顶点和边(或弧)的功能(5分) 两种存储结构的转换(5分),如果其中一种存储结构为十字链表或...

    无向图的各项功能的课程设计

    8、 判断图中是否存在环,无向图5分,有向图10分 9、 给出顶点u和v,判断u到v是否存在路径(5分) 10、求顶点u到v的一条简单路径(10分) 11、求顶点u到v的所有简单路径(15分) 12、求顶点u到v的最短路径(10分) ...

    数据结构;最小生成树;最短路径;关键路径

    1、 对无向图求每个顶点的度,或对有向图求每个顶点的入度和出度(2、 完成插入顶点和边(或弧)的功能3、 完成删除顶点和边(或弧)的功能 4、 两种存储结构的转换,如果其中一种存储结构为十字链表或邻接多重表则...

    数据结构习题答案(全部算法)严蔚敏版

    7.5.2 求有向网中每对顶点间的路径 7.6 有向无环图及应用 7.6.1 拓扑排序 7.6.2 关键路径 7.7 图的算法C语言程序实现举例 7.7.1 无向图的邻接表的建立和遍历 7.7.2 有向无环图的拓扑排序和求关键路径 习题七...

    数据结构 严蔚敏 代码

    范例1-104 有向图的十字链表存储表示 335 ∷相关函数:CreateDG函数 1.7.4 无向图的邻接多重表存储表示 344 范例1-105 无向图的邻接多重表存储表示 344 ∷相关函数:CreateGraph函数 1.7.5 最小生成树 355 范例1-106...

    数据结构(C++)有关练习题

    4、用邻接矩阵或邻接图实现一个有向图的存储,并实现单源最短路径算法的实现(这个类的一个成员函数),并能输出该图的关键路径。 注:1、要用面向对象的方法设计代码; 2、一个图是一个类的实例; 3、类...

    严蔚敏:数据结构题集(C语言版)

    7.4.2 有向图的强连通分量 7.4.3 最小生成树 7.4.4 关节点和重连通分量 7.5 有向无环图及其应用 7.5.1 拓扑排序 7.5.2 关键路径 7.6 最短路径 7.6.1 从某个源点到其余各项点的最短路径 7.6.2 每一对顶点之间的最短...

    数据结构算法实现(严蔚敏版配套实现程序)

    范例1-104 有向图的十字链表存储表示 335 ∷相关函数:CreateDG函数 1.7.4 无向图的邻接多重表存储表示 344 范例1-105 无向图的邻接多重表存储表示 344 ∷相关函数:CreateGraph函数 1.7.5 最小生成树 355 范例1-106...

    数据结构(王)c元代码

    范例1-104 有向图的十字链表存储表示 335 ∷相关函数:CreateDG函数 1.7.4 无向图的邻接多重表存储表示 344 范例1-105 无向图的邻接多重表存储表示 344 ∷相关函数:CreateGraph函数 1.7.5 最小生成树 355 范例1-106...

    数据结构算法实现(严蔚敏版配套实现程序)

    范例1-104 有向图的十字链表存储表示 335 ∷相关函数:CreateDG函数 1.7.4 无向图的邻接多重表存储表示 344 范例1-105 无向图的邻接多重表存储表示 344 ∷相关函数:CreateGraph函数 1.7.5 最小生成树 355 范例1-106...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 2.5 结构化程序设计方法 31 3 数据类型、运算符与表达式 3.1 C语言的数据类型 32 3.2 常量与变量 33 23.2.1 常量和符号...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 2.5 结构化程序设计方法 31 3 数据类型、运算符与表达式 3.1 C语言的数据类型 32 3.2 常量与变量 33 23.2.1 常量和符号...

    数据结构的电子书(chm版)

    7、4、2 有向图的强连通分量 7、4、3 最小生成树 7、4、4 关节点和重迦通分量 7、5、0 有向无环图及其应用 7、5、1 拓扑排序 7、5、2 关键路径 7、6、0 最短路径 7、6、1 从某个源点到其余各顶点的最短路径 7、6、2 ...

    c语言数据结构

    7、4、2 有向图的强连通分量 7、4、3 最小生成树 7、4、4 关节点和重迦通分量 7、5、0 有向无环图及其应用 7、5、1 拓扑排序 7、5、2 关键路径 7、6、0 最短路径 7、6、1 从某个源点到其余各顶点的最短路径 7、6、2 ...

Global site tag (gtag.js) - Google Analytics