2014-01-23 133 views
-3

這是我的代碼是二叉搜索樹刪除C節點中的某些錯誤

訪問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); } 
      } 
+3

(1)在這裏發佈相關的代碼。 (2)給你的問題提供更多信息的標題。 (3)這篇文章沒有問題。 (4)您是否嘗試瞭解錯誤消息?你覺得它說什麼?你試圖解決這個問題的是什麼? (5)請說明錯誤的具體位置。 – amit

+0

對不起,這是我的第一個stackover。 該代碼我嘗試使二進制樹與搜索添加刪除和孩子,但我做了一些問題,我找不到這個。 – ZgrKARALAR

回答

1

你傳入link *類型參數的功能search_arc同時期待link *[]類型參數。將您的函數原型更改爲

int search_arc(link *gr, char c1, char c2) 

如果您想通過link *類型參數。

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