邻接矩阵

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int vertice;
 6     int edge;
 7     char i,j;
 8     int s;
 9     int a=0;
10     cout<<"请输入无向图的顶点数"<<endl;
11     cin>>vertice;
12     cout<<"请输入无向图的边数"<<endl;
13     cin>>edge;
14     char *ver1=new char[vertice];
15     char *ver2=new char[vertice];
16     int *degree=new int[vertice];
17     int **array;
18     array=new int*[vertice];
19     cout<<"请输入每个顶点元素"<<endl;
20     for(int p=0;p<vertice;p++)
21     {
22         cin>>ver1[p];
23         ver2[p]=ver1[p];
24     }
25     cout<<"请输入无向图的边,以0结束"<<endl;
26     for(int K=0;K<edge;K++)
27     {
28         array[K]=new int[edge];
29     }
30     for(p=0;p<vertice;p++)
31     {
32         for(int q=0;q<vertice;q++)
33             array[p][q]=0;//先给邻接矩阵中的每个元素赋值为0
34     }
35     while(true)
36     {
37         cin>>i;
38         if(i==‘0‘)//注意一定要加单引号!!
39             break;
40         else
41         {
42             for(int p=0;p<vertice;p++)//构造邻接矩阵
43             {
44                 if(ver1[p]==i)
45                 {
46                     cin>>j;
47                     s=p;
48                     p=vertice;
49                 }
50             }
51             for(int q=0;q<vertice;q++)
52             {
53                 if(ver2[q]==j)
54                 {
55                     array[s][q]=array[s][q]+1;
56                     array[q][s]=array[q][s]+1;
57                     q=vertice;
58                 }//记录两点之间的边数
59             }
60         }
61     }
62     cout<<"该邻接矩阵为:"<<endl;//输出邻接矩阵
63
64     for(p=0;p<vertice;p++)
65     {
66         for(int q=0;q<vertice;q++)
67
68             cout<<array[p][q]<<" ";
69
70         cout<<endl;
71
72     }
73
74     for(i=0;i<vertice;i++)
75             degree[i]=0;
76     for(i=0;i<vertice;i++)
77     {
78         for(int j=0;j<vertice;j++)
79             degree[i]+=array[i][j];
80     }
81     for( i=0;i<vertice;i++)
82         cout<<degree[i]<<endl;
83
84
85
86     system("pause");
87 }
时间: 2024-10-24 13:53:27

邻接矩阵的相关文章

HDU——1874畅通工程续(邻接矩阵弗洛伊德)

畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 41849    Accepted Submission(s): 15463 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走

图的邻接矩阵存储结构

如上图,我们可以把v0标记为0,v1标记为1.... 并把联通的2点权值全设置为1,那么可以用邻接矩阵(右图)来表示 概念解析: 第一个邻接顶点: 我们以vo为例,第一个邻接顶点为V1(其实也可以使V3,只不过考虑计算机的存储顺序,我们找邻接顶点,一般是从v0扫描到v3,所以我们先在内存中扫描到v1) 下一个邻接顶点: 我们以v0为例,下一个邻接顶点就是v3(同样,其实也可以使V1,只不过考虑计算机的存储顺序,我们找下个邻接顶点,一般是从v2扫描到v3,之所以从v2扫描起,那是因为,V1已经是第

SDUT 2141 【TEST】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历

数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列.(同一个结点的同层邻接点,节点编号小的优先遍历) Input 输入第一行为整数n(0< n <100),表示数据的组数.对于每组数据,第一行是三个整数k,m,t(0<

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

数据结构学习笔记05图 (邻接矩阵 邻接表--&gt;BFS DFS)

数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边<v, w> 表示从v指向w的边(单行线) 不考虑重边和自回路 无向图:边是无向边(v, w) 有向图:边是有向边<v, w> 连通:如果从V到W存在一条(无向)路径,则称V和W是连通的 连通图(Connected Graph):如果对于图的任一两个顶点v.w∈V,v和w都是连通的,则称

图的存储结构:邻接矩阵(邻接表)&amp;链式前向星

[概念]疏松图&稠密图: 疏松图指,点连接的边不多的图,反之(点连接的边多)则为稠密图. Tips:邻接矩阵与邻接表相比,疏松图多用邻接表,稠密图多用邻接矩阵. 邻接矩阵: 开一个二维数组graph[ ][ ]来记录图中点a与点b之间是否连通,初始化为0(或者-1之类的看情况):如果图中有可忽略的重边(如 只需重边中的最小边或最大边),则保存需要的那条边的边权,但如果有无法忽略的重边,就一定不要用邻接矩阵. int graph[MAXN][MAXN]; void graphInit() { me

采用邻接矩阵创建图

采用邻接矩阵创建一个有向网N 分析:图的创建主要利用输入的各个顶点,并存储到一个向量(一维数组)中,然后通过输入两个顶点及权重创建弧,利用二维数组表示,因此,利用邻接矩阵创建图的存储需要两个数组:一个一维数组和一个二维数组. #include<stdio.h> #include<string.h> #include<malloc.h> #include<stdlib.h> typedef char VertexType[4]; typedef char In

图的割点(邻接矩阵实现)

/* Name: 图的割点(邻接矩阵) Copyright: Author: 巧若拙 Date: 21-11-14 20:34 Description: 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合. 求割点与桥的算法是R.Tarjan发明的.对图深度优先搜索,定义DFS(u)为u在搜索树(以下简称为树)中被遍历到的次序号(等价于时间戳). 定义Low(u)为u或u的子树中能通过非父子边追溯到的最早的节

数据结构:图的实现--邻接矩阵

图结构的邻接矩阵实现 为了表现图中顶点之间的关联,我们可以使用邻接矩阵来实现图结构.所谓的邻接矩阵,就是一个反应边与边之间联系的二维数组.这个二维数组我们用matrix[numV][numV]表示,其中numV是顶点数. 对于无权图 若顶点Vi和Vj之间有边,则matrix[Vi][Vj]=1;否则matrix[Vi][Vj]=0. 对于有权图 若顶点Vi和Vj之间有边,且权值为weight,则matrix[Vi][Vj]=weight;否则matrix[Vi][Vj]=0或MAXWEIGHT(

邻接矩阵的深度优先遍历

摘要:对<大话数据结构>P240——邻接矩阵的深度优先遍历,进行了自己的理解并完善了代码.Qt Creator测试通过. 举个简单的无序图例子,为了节省时间传手稿. 首先用邻接矩阵的存储结构创建该图,再进行深度优先遍历.代码和解释如下: #include <iostream> #include <stdlib.h> using namespace std; typedef struct//图的邻接矩阵存储结构 { char vexs[5]; int arc[5][5];