这是我的代码
访问http://pastebin.com/697Dr51E#
当我尝试为我制作一些错误时
错误1错误C2664:' search_arc' :无法转换参数1 '链接[]'链接* []'
功能定义:
int search_arc(link *gr[n], char c1, char c2)
{
int flag = 0;
if (search_node(gr, c1) && search_node(gr, c2))
{
int i = 0;
while (gr[i] == NULL || gr[i]->key != c1)i++;
link *p = gr[i];
while (p->key != c2&&p->next != NULL)
p = p->next;
if (p->key == c2) flag = 1;
}
return flag;
}
函数调用:
switch (m)
{
case(7) : {cout << "\nInput first node : "; cin >> c;
cout << "\nInput second node : "; cin >> k;
if (search_arc(gr, c, k))cout << "\nYes!";
else cout << "\nNo!"; break;}
case(8) : {list_node(gr); }
}
答案 0 :(得分:1)
您正在将link *
类型参数传递给函数search_arc
,而期望link *[]
类型参数。将您的函数原型更改为
int search_arc(link *gr, char c1, char c2)
如果您想传递link *
类型参数。
答案 1 :(得分:1)
此代码存在很多问题。在这种情况下,您将重用名为gr
的变量,该变量是在文件顶部附近声明的全局变量。然后,您使用相同的变量名称作为参数。您应该将全局或函数参数重命名为不同的名称并从那里继续。
目前还不清楚add_arc()函数中的代码是否尝试使用参数gr
或全局gr
,因为它们是不同的类型。一个是link**
,另一个是link*
。
注意函数add_arc()的声明有一个参数link gr[n]
,它与search_arch()参数link *gr[n]
的类型不同:
void add_arc(link gr[n], char c1, char c2)
{
int i = 0;
link *p;
if (search_arc(gr, c1, c2))
{
cout << "\nExisting arc!\n";
...