ZKX's LAB

怎么根据无向图画出邻接表 输入并构造正邻接链表

2021-03-24知识6

就高手帮帮忙,写一个以邻接表形式构建图并输出的的函数,感激不尽呐。(C语言版的,最好是结构体形式) 没人理你…我找不到简单的版本的…只找到一个还算简单的…includeincludeincludeincludedefine MaxVerNum 50define OK 1define NULL 0typedef int Status;int visited[MaxVerNum];typedef struct Arcnode{int adjvex;struct Arcnode*next;int info;}ArcNode;typedef struct vnode{char data;ArcNode*firstedge;}VNode;typedef VNode AdjList[MaxVerNum];typedef struct {AdjList adjlist;int vexnum,arcnum;} ALGraph;Status Visit(char e)/输出一个字母{printf(\"%2c\",e);return OK;}void Get(char*e)/输入一个字母{scanf(\"%c\",e);while。('A'*e&*e)|('a'*e&*e))scanf(\"%c\",e);}void TGet(int*e)/输入一个数字{scanf(\"%d\",e);while(scanf(\"%d\",e)){getchar();}}void InIt(ALGraph*G,int S[])/数组初始化{for(int i=0;i<;G->;vexnum;i+)S[i]=0;}void FindD(ALGraph*G,char arch,int*a)/找到顶点的下标{int m;for(m=0;m<;G->;vexnum;m+){if(arch=G->;adjlist[m].data)a=m;}}void Find(ALGraph*G,char arch,char arce,int*a,int*b)/找到弧头和弧尾的下标{FindD(G,arch,a);FindD(G,arce,b);}Status IsBe(ALGraph*G,char arch)/判断。

数据结构问题 双向链表求矩阵第i列非0元素的个数2n n-1 n+1

根据下图所示的邻接链表,画出相应的图;并据该邻接表,给出从A开始进行深度优先、广度优先搜索得到 深度优先遍历 深度优先遍历 遍历算法:)从某一顶点出发开始访问,被访问的顶点作相应的标记,输出访问顶点号.)从被访问的顶点)从被访问的顶点出发,依次搜索与该顶点有边的。

图的构造(用邻接表储存) 你程序中algraph G没有申请空间.改了下 在VC6.0下能运行的include\"iostreamdefine Max 100using namespace std;struct arcnode/弧结点结构{int adjvex;该弧所指向的顶点的位置struct arcnode*nextarc;指向下一条弧的指针};struct vexnode/顶结点结构{char data;顶点信息arcnode*firstarc;指向第一条依附该顶点的弧};struct algraph/图结构{vexnode vexlist[Max];顶点结点数组int vexnum,arcnum;图的当前顶点数和弧数};int locate(algraph*G,char v)/返回该顶点在顶点数组中的位置{int i=0;while(G->;vexlist[i].data。v)i+;return i;}void creatgraph(algraph*&G)/创建图,用链接表储存{cout请输入顶点数,边数\";G=new algraph;cin>;>;G->;vexnum>;>;G->;arcnum;cout请输入各顶点的信息\";for(int i=0;i<;G->;vexnum;i+){cin>;>;G->;vexlist[i].data;输入顶点G->;vexlist[i].firstarc=NULL;初始化链表头指针为\"空}for(int k=0;k<;G->;arcnum;k+)/输入各边并构造邻接表{char sv,tv;int i,j;arcnode*pi;cout请输入第\"条弧的头尾结点\";cin>;>;sv>;>;tv;i=locate(G,sv);j=locate(G,tv);返回头结点sv和尾结点tv在顶点结点数组中的位置pi=new arcnode;pi->;adjvex=j;pi->;。

请教编程大神数据结构题目:c语言使用邻接链表存储结构实现用户输入的无向图的连通性判断 #includeincludedefine MAX_VERTEX_NUM 100typedef struct ArcNode{int adjvex;该边2113的另一个顶点的位置struct ArcNode*nextarc;指向下一5261条边}ArcNode;typedef struct VNode{int data;顶点的值ArcNode*firstarc;指向第一条依附该顶4102点的边的指针}VNode,AdjList[MAX_VERTEX_NUM];typedef struct{AdjList vertices;顶点数组int vexnum,arcnum;}ALGraph;int LocateVex(ALGraph G,int v){/定位函1653数for(int i=0;i;i+){if(v=G.vertices[i].data)return i;}}void CreateUDG(ALGraph&G){ArcNode*p,*q;int i,j,k,v1,v2;printf(\"分别输入顶点个数和边的数目:\\n\");scanf(\"%d%d\",&G.vexnum,&G.arcnum);printf(\"分别输入各个顶点值:\\n\");for(i=0;i;i+){scanf(\"%d\",&G.vertices[i].data);G.vertices[i].firstarc=NULL;初始化}printf(\"分别输入各条边的两个顶点:\\n\");for(k=0;k;k+){scanf(\"%d%d\",&v1,&v2);i=LocateVex(G,v1);j=LocateVex(G,v2);定位p=(ArcNode*)malloc(sizeof(ArcNode));申请一个结点p->;adjvex=j;p->;nextarc=NULL;赋值p->;nextarc=G.vertices[i].firstarc;连接结点G.vertices[i].firstarc=p;连接结点q=(ArcNode*)malloc。

图采用邻接矩阵和邻接链表表示时,深度优先遍历算法的时间复杂度有何不同? 1.采用邻接矩阵表示时,设邻接矩阵有百n×n阶,矩阵包含n^2个元素。对每个顶点来说,搜索其所有邻接点需要搜索矩阵中对应的整个一行,度因此,对整个图的遍历来说,问需要搜索整个矩阵,算法的时间复杂度为O(n^2)。2.采用邻接表表示时,若邻接表有n个结点和e条边,对每个顶点来说,搜索其所答有邻接点需要搜索邻接表中对应的链表的各结点,算法的时间复杂度为O(n+e)。扩展资料:深度优先遍历算版法的步骤:(1)访问顶点V0;(2)依次权从V0的各个未被访问的邻接点出发深度遍历。

下面结构中最适合表示稀疏无向图的是 A.邻接矩阵 B.逆邻接表 C.邻接多重表 D.十字链表 邻接多重表,因为只需要保存边数一样多的结点BD是专用于有向图A与稀疏无关

具体实现要求: include\"utility.hinclude\"adj_matrix_undir_graph.hinclude\"adj_list_dir_graph.hinclude\"dfs.hinclude\"bfs.hint main(void){\\x09int n,j=0,i=0;\\x09int m,e,b=0;\\x09char vexs[20],c;\\x09char nums[20];\\x09cout

怎么根据无向图画出邻接表 输入并构造正邻接链表

怎么根据无向图画出邻接表,无向图的邻接表和数据结构中的链表类似,但是又有不同,在软件设计师考试中也曾经出现,今天就给大家讲一下怎么根据无向图来画邻接表

关于c中数组模拟邻接链表 head数组是全局变量,如果你没有初始化,全局变量的数组会自动初始化为全0。

#输入并构造正邻接链表

随机阅读

qrcode
访问手机版