这是我的代码
访问http://pastebin.com/697dr51e#
当我尝试为我构建该错误时,错误
错误1错误c2664:'search_arc':无法从中转换参数1 'link []'to'link *[]'
功能定义:
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); }
}
您在期望link *[]
类型参数时将 link *
键入type参数传递给您的函数 search_arc
。将您的功能原型更改为
int search_arc(link *gr, char c1, char c2)
如果要通过link *
类型参数。
此代码有很多问题。在这种情况下,您将重复使用一个名为gr
的变量,该变量是在文件顶部附近声明的全局。然后,您将相同的变量名称用作参数。您应该将全局或函数参数重命名为不同的事物,然后从那里继续。
尚不清楚add_arc()函数中的代码是否正在尝试使用参数gr
或全局gr
,因为它们是不同的类型。一个是link**
,另一个是link*
。
note 函数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";
...