图的邻接表存储 c实现
图的邻接表存储 c实现 (转载)
用到的数据结构是
一个是顶点表,包括顶点和指向下一个邻接点的指针
一个是边表, 数据结构跟顶点不同,存储的是顶点的序号,和指向下一个的指针
刚开始的时候把顶点表初始化,指针指向null。然后边表插入进来,是插入到前一个,也就是直接插入到firstedge指向的下一个,而后面的后移
- #define MaxVertexNum 100
- typedef char VertexType;
- typedef struct node //边表节点
- {
- int adjvex;
- node* next;
- }EdgeNode;
- typedef struct //顶点表节点
- {
- VertexType vertex;
- EdgeNode* firstedge;
- }VertexNode;
- typedef VertexNode AdjList[MaxVertexNum];
- typedef struct
- {
- AdjList adjlist;
- int n,e;
- }ALGraph;
以下建立的是无向图的邻接表,有向图的更简单了
- #include <stdio.h>
- #include <stdlib.h>
- #define MaxVertexNum 100
- typedef char VertexType;
- typedef struct node //边表节点
- {
- int adjvex;
- node* next;
- }EdgeNode;
- typedef struct //顶点表节点
- {
- VertexType vertex;
- EdgeNode* firstedge;
- }VertexNode;
- typedef VertexNode AdjList[MaxVertexNum];
- typedef struct
- {
- AdjList adjlist;
- int n,e;
- }ALGraph;
- void create(ALGraph*);
- void main()
- {
- ALGraph* G= (ALGraph*)malloc(sizeof(ALGraph));
- create(G);
- for (int i=0;i< G->n;i++)
- {
- printf("%d->",i);
- while(G->adjlist[i].firstedge!=NULL)
- {
- printf("%d->",G->adjlist[i].firstedge->adjvex);
- G->adjlist[i].firstedge=G->adjlist[i].firstedge->next;
- }
- printf("\n");
- }
- }
- void create(ALGraph* G)
- {
- int i,j,k,w,v;
- EdgeNode *s;
- printf("读入顶点数和边数");
- scanf("%d,%d",&G->n,&G->e);
- for (i=0;i<G->n;i++)
- {
- fflush(stdin);
- printf("建立顶点表");
- G->adjlist[i].vertex=getchar();
- G->adjlist[i].firstedge=NULL;
- }
- printf("建立边表\n");
- for (k=0;k<G->e;k++)
- {
- printf("读入(vi-vj)的顶点对序号");
- scanf("%d,%d",&i,&j);
- s=(EdgeNode*)malloc(sizeof(EdgeNode));
- s->adjvex=j;
- s->next=G->adjlist[i].firstedge; //插入表头
- G->adjlist[i].firstedge=s;
- s=(EdgeNode*)malloc(sizeof(EdgeNode));
- s->adjvex=i;
- s->next=G->adjlist[j].firstedge;
- G->adjlist[j].firstedge=s;
- }
- }
图的邻接表存储 c实现的更多相关文章
- 图的邻接表存储表示(C)
//---------图的邻接表存储表示------- #include<stdio.h> #include<stdlib.h> #define MAX_VERTEXT_NUM ...
- 数据结构之---C语言实现图的邻接表存储表示
// 图的数组(邻接矩阵)存储表示 #include <stdio.h> #include <stdlib.h> #include <string.h> #defi ...
- c_数据结构_图_邻接表
课程设计------邻接表 图的遍历实现课程设计:https://files.cnblogs.com/files/Vera-y/图的遍历_课程设计.zip #include<stdio.h> ...
- 数据结构(11) -- 邻接表存储图的DFS和BFS
/////////////////////////////////////////////////////////////// //图的邻接表表示法以及DFS和BFS //////////////// ...
- 邻接表存储图,DFS遍历图的java代码实现
import java.util.*; public class Main{ static int MAX_VERTEXNUM = 100; static int [] visited = new i ...
- c++邻接表存储图(无向),并用广度优先和深度优先遍历(实验)
一开始我是用c写的,后面才发现广搜要用到队列,所以我就直接使用c++的STL队列来写, 因为不想再写多一个队列了.这次实验写了两个多钟,因为要边写边思考,太菜了哈哈. 主要参考<大话数据结构&g ...
- PTA 邻接表存储图的广度优先遍历(20 分)
6-2 邻接表存储图的广度优先遍历(20 分) 试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(V ...
- PTA 邻接表存储图的广度优先遍历
试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ) 其中LGraph是邻接表存储的 ...
- 数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)
数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边& ...
随机推荐
- JavaWeb——文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- vector的内存分配与释放
1. vector内存分配 <Effective STL>中"条款14":使用reserve来避免不必要的重新分配 关于STL容器,最神奇的事情之一是只要不超过它们的最 ...
- lua 类继承和实现
http://blog.csdn.net/ssihc0/article/details/7742323 Account={balance=}; --新建了一个对像,他有一个属性balance func ...
- ZendStudio快捷键 注释的快捷键
注:本文省略“通用快捷键”描述,诸如:ctrl+N=新建,ctrl+O=打开,ctrl+C=复制,ctrl+V,ctrl+X……等等几乎所有软件都通用的一组快捷键,而着重介绍zde独有的快捷键,了解并 ...
- 基于angularJS和requireJS的前端架构
1.概要描述 1.1.angularJS描述:angularJS是可以用来构建WEB应用的,WEB应用中的一种端对端的完整解决方案.通过开发者呈现一个更高层次的抽象来简化应用的开发.最适合的就是用它来 ...
- 【并查集专题】【HDU】
PS:做到第四题才发现 2,3题的路径压缩等于没写 How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- ASP.NET属性之AssociatedControlID
AssociatedControlID 是用在Asp.Net 中的 Label 控件上.给label控件关联一个ASP.NET的控件,在点击 这个 LABEL的时候,所关联的ASP.NET控件会获得焦 ...
- Tomcat地址栏传中文参数乱码问题处理
javascript中有时需要向后台传递中文参数,再次展示到前台时显示为乱码,解决方案: 方案1:修改Tomcat-conf-server.xml文件 大约69-71行 修改为: <Conne ...
- jQuery.on() 函数详解
on() 函数用于为指定元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于 ...
- A - 487-3279
Description Businesses like to have memorable telephone numbers. One way to make a telephone number ...