哪位高手帮我看看这个C++邻接表的程序

哪位高手帮我看看这个C++邻接表的程序,第1张

Adjlist中咐梁蔽的firstarc成员尚未分配内存,可衡州以这样做:

V.vertices[0].firstarc = new ArcNode

还有渣盯nextarc也需要分配内存。

/**

 *

 * 处理流程是:先根据图的顶点数创建一个空的邻接表,然后

将图的信息输入邻接表(竖码由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

}


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

原文地址:https://54852.com/yw/12413013.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存