邻接表怎么建立?

邻接表怎么建立?,第1张

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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12407080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存