/*
树的链表表示方法。
*/
#include<iostream>
#include<stdio.h>
using namespace std;
#define MAX_VERTEX_NUM 20
typedef struct ArcNode//弧结点
{
int adjex;//该弧所指向的顶点的位置
struct ArcNode *nextarc;//该弧所指向的下一条弧的指针
}ArcNode;
typedef struct VNode//点结点
{
ArcNode *firstarc;//指向第一条依附该顶点的弧的指针
}VNode,AdjList[MAX_VERTEX_NUM];
typedef struct
{
AdjList vertices;
int vexum,arcnum;//图的当前顶点数和弧数
}ALGraph;
ALGraph graph;
void input()
{
int a,b;
while(scanf("%d %d",&a,&b))
{
if(a==0&&b==0) return ;
else
{
//如果说顶点结点没有连接的弧
if(graph.vertices[a].firstarc==NULL)
{
//开辟一个弧结点空间
ArcNode *p;
p=(ArcNode*)malloc(sizeof(ArcNode));
//加到顶点结点的末尾
graph.vertices[a].firstarc=p;//把这个指针指向空。
//初始化部分
p->nextarc=NULL;
p->adjex=b;
}
//如果说顶点结点已经有连接的弧
else
{
//首先要查到末尾
ArcNode *p;
p=graph.vertices[a].firstarc;
while(p->nextarc!=NULL)
{
p=p->nextarc;
}
//开辟一个弧结点
ArcNode *m;
m=(ArcNode*)malloc(sizeof(ArcNode));
//加到末尾
p->nextarc=m;
//初始化部分
m->nextarc=NULL;
m->adjex=b;
}
}
}
}
int main()
{
//初始化
cout<<"输入顶点数和弧数"<<endl;
scanf("%d %d",&graph.vexum,&graph.arcnum);
input();
cout<<"结束"<<endl;
return 0;
}
/*
1 malloc相当于开辟空间。哈哈。终于理解啦。
*/
图的链表表示
最新推荐文章于 2022-04-14 13:34:26 发布