将函数的一部分移动到另一个函数中

时间:2013-03-03 14:30:42

标签: c++

这是循环列表节点的结构声明:

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);
...
}

不起作用:(

1 个答案:

答案 0 :(得分:0)

您的功能需要实际修改HeadTail的功能(即修改这些指针指向的位置)。因此,您需要通过引用Node *&传递它们。

另一方面,x不是您需要传递给函数的变量。 (它是Node结构的成员。)

所以你的函数应该像这样定义:

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

你想要传递给函数的任何东西,使得函数对它做出的任何改变都反映在函数外部,你需要通过引用传递(或做一些更复杂的事情,比如指针,在{{ 1}}和Head表示指针指针。