邻接表相连节点是插入链接的,不是顺序链接的(画图理解下面的代码,就能理解这句话的意思了)
指针存无向图
#include<cstdio>
#include<iostream>
#include<cstdlib>
using namespace std;
#define Max 100
struct edge
{
int v;
struct edge *next;
};//边结构,i j 之间有边,v存的值就是i或者j(无向图),指针是指向i k边中k节点的
struct node
{
struct edge *first;
} ri[Max];//Max指的是节点的数量,first指针是出该节点的指针(ri[i]有头节点的味道)
void creat(int n,int m)
{
int i,j,k;
struct edge *pe;
for (i = 0; i < n; ++i)
{
ri[i].first = NULL;//这样写的前提是,节点对应i;将该指针赋值为空,以保证邻接表最后节点的指针为空
}
for (k = 0; k < m; ++k)
{
cin>>i>>j;
pe = (struct edge*)malloc(sizeof(struct edge));
pe -> v = j;
pe -> next = ri[i].first;
ri[i].first = pe;
pe = (struct edge*)malloc(sizeof(struct edge));
pe