2013-03-03 71 views
-2

下面是一個循環鏈表的節點結構聲明:移動功能的一部分到另一個函數

struct Node 
{ 
    int x; // info field 
    struct Node *Next; 
}; 

int main()我有一個循環,填補從1到10的數字列表:

int main() 
{ 

    Node *Head=NULL, *Tail=NULL; 
    int size = 0; 
    int info = 0; 

    for (int j = 0; j < 10; j++) 
    { // for 
     info++; 
     size++; 
     Node *temp=new Node; 
     temp->Next=Head; 
     temp->x=info; 

     if (Head!=NULL) 
     { 
      Tail->Next = temp; 
      Tail=temp; 
     } 

     else Head=Tail=temp; 
    } // endfor 
} 

如何製作一個包含此循環的函數,並從main()調用? 事情是這樣的:

void Fill(struct Node *Head, struct Node *Tail, int &x, int &info) 
{ 
    // <function body> 
} 

int main() 
{ 
... 
Fill(Head, Tail, x, info); 
... 
} 

不工作:(

+3

你怎麼說「如何製作一個包含這個循環的函數」?什麼不起作用?你的函數體內沒有任何東西。什麼是'x'和'info'應該保持? – 2013-03-03 14:32:02

回答

0

你的函數需要實際修改功率HeadTail(即修改這些指針點)因此,你需要通過他們。參考Node *&

在另一方面,x是不是你需要傳遞給函數的變量。(這是Node結構的成員。)

所以你的函數應定義是這樣的:你想傳遞給函數使得功能使得它的功能以外的任何變更,則需要按引用傳遞

void Fill(Node *&Head, Node *&Tail, int &info) 
{ 
    // <function body> 
} 

任何(或做甚至更復雜一些,如指針,在HeadTail的情況下,將指向指針的指針)。

+0

非常感謝。不知道'*&'。是的,我犯了一個錯誤,它是我需要傳遞給函數的'info'和'size'變量,而不是'x'。 – 2013-03-03 14:41:42

+0

@WildSpirit是的,我不確定'尺寸'。如果你想修改函數內部的內容(並且修改反映在函數之外),那麼是的,你也需要將它作爲參考。 – jogojapan 2013-03-03 14:42:41

相關問題