1、先把要讲解的巧码图在下面展示一下,先看一下;
2.然后在图闷高中的邻接点的值的范围画出邻接表的表头。
3.根据上一步画出的表头分析与其相蚂宽尺连的点,这里链表之中后面有3个框;
4.在链表中第一个框写相连点的顶点值,第二个框中写权值;
5、根据上述的方式,依次把后面数字的链表写下来,无向带权图的邻接表就画出来了,最后的结果如下图所示;
邻接表是图的常用储存结构之一。邻接表由表头结点和表结点两部分组成,其中图中每个顶点均对应一个存储在数组中的表头结点。
AdjList 是自定义类型,是char类型,第二行 typedef将char类和冲型自定义为 VertexType,即VertexType代表了char型,
VertexType a 就相当于 char a;
同理
倒数第五行 typedef将VertexNode自定义为 AdjList[MaxVertexNum]类型,迹棚搜也就是说现在AdjList就代表了一个 “结构姿历体数组” 类型
AdjList adjlist 相当于 VertexNode adjlist[MaxVertexNum]
这里主要是typedef关键字的使用 希望能帮到你
/***
* 处理流程是:先根据图的顶点数创建一个空的邻接表,然后
将图的信息输入邻接表(竖码由CeateList函数完成)
*
**/
#include <iostream>
using namespace std
class Node
{
public:
char data
Node *next
int info
public:
Node(){next=NULL}
}
class AdjList
{
private:
Node *node
int vernum
public:
void Initialize(int)
void CreatList()
void display()
}
void AdjList::Initialize(int n)
{
int i
vernum=n
node=new Node[n]
for(i=0i<ni++)
{
node[i].info=i
node[i].data='A'+i
}
}
//@ 创建邻接表
void AdjList::CreatList()//char a,char b
{
int i,j
int num //@ 与某个顶点相邻接的顶点的数量
Node *p_node_new //@ 新创建的节点
Node *p_node_second //@ 链表中的第二个节点
char c //@ 输入的顶点
for(i=0i<vernumi++)
{
printf("请输入与第%d个顶猜猛点[%c]相邻的顶点数:",i,node[i].data)
cin>>num
printf("请输入与[%c]相邻的顶点,用大写字母进行输入:",node[i].data)
//@ 输入顶点,并加入node[i]链。
for(j=0j<numj++)
{
cin>>c
p_node_new=new Node
p_node_new->data=c
p_node_new->info=c-'A'
//@ 将新节点插入到链表开头
p_node_second=node[i].next
node[i].next=p_node_new
p_node_new->next=p_node_second
}
}
/*
Node *t=new Node()
int i,j
for(i=0i<vernumi++)
{
for(j=0j<vernumj++)
{
if(node[i].data==a && node[j].data==b)
{
t=&node[i]
while(t->next!=NULL)
{
t=t->next
}
t->next=&node[j]
return
}
}
}
*/
}
void AdjList::display()
{
int i
for(i=0i<vernumi++)
{
//Node *T=new Node()
Node *T //@ 这里是遍历现存的链表,不需要new
cout<<node[i].info<<" "<<node[i].data<<"-"
T=node[i].next
while(T!=NULL)
{
cout<<T->info<<"-"
T=T->next
}
cout<<"^"<<endl
//delete T
}
}
int main()
{
AdjList a
int i,j,t,num,arc
char c1,c2
cout<<"请输入图的顶点数: "
cin>>t //@ 顶点数
a.Initialize(t)//@ 创建空表
cout<<"创建的邻接表为余兆哪:\n"
a.display()
a.CreatList()//@ 将图的信息存入表中
cout<<endl
cout<<"输入的端邻接表为:"<<endl
a.display()
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)