二进制搜索树C删除节点一些错误



这是我的代码

访问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";
...

最新更新