创建基于用户的图形

Creating an user based graph

本文关键字:图形 用户 于用户 创建      更新时间:2023-10-16

我是图形部分的新手。我最近尝试编写程序,它将采取顶点,边和顶点之间的连接的数量。

#include<iostream>
#include<queue>
#include<vector>
using namespace std ;
void add_edge(vector<int> adj[] , int v1 , int v2 )
{
adj[v1].push_back(v2);
adj[v2].push_back(v1);
}
void print_graph ( vector<int>adj[] , int vertices)
{
for(int i = 0 ; i < vertices ; i++)
{
cout<< "adjacency list of vertex " << i << " is : n" ;
cout<< "head -> " ;
for(auto it = adj[i].begin() ; it != adj[i].end() ; it++)
{
cout << *it << " -> " ;
}
cout<< "n" ;
}
}
int main()
{
int ver , ed , i , j , s , v1 , v2 , temp ;
cin >> ver >> ed ;
vector<int> adj[ver] ;
for(i = 0 ; i < ver ; i++)
{
cin>> v1 ;
for(i = 0 ; i < ed ; i++)
{
cin >> v2 ;
char ch = (char)v2 ;
if (v2 == 'n')
{
break ;
}
add_edge(adj , v1 , v2 ) ;
}
}
print_graph(adj , ver);
return 0 ;
}

我对用户按回车键时如何停止循环感到困惑。所以我试了这个。在我看来,看起来不那么酷,但合乎逻辑。

cin >> v2 ;
char ch = (char)v2 ;
if (v2 == 'n')
{
break ;
}

但是整个程序无法正常工作。请帮我弄清楚。

您将变量i用于两个循环。在内for循环之后,i将始终等于ed,如果小于ver,则处于无限循环中。

为内部循环使用不同的变量,例如您已经定义的j

for (j = 0; j < ed; j++)

另请注意,虽然允许您将v2'n'进行比较,但这不会检查用户是否按了 Enter 键。相反,您正在将v2与换行符的 ASCII 值进行比较(即10(。您可以更改分隔符,例如,仅在换行符处停止输入,请参阅此问题。