重载函数调用函数具有相同的名称但参数不同

时间:2014-01-21 04:35:01

标签: c++ function linked-list overloading singly-linked-list

我正在创建链接列表。我想调用函数

addToTail(head*, data)

来自函数

  addToTail(head*){int n = length(head*);  addtoTail(head*, n)}

包含一个可以计算列表长度的函数。

这不幸地给了我一个错误

\linkedList.cpp:97:16: error: too few arguments to function 'void addAtTail(node*, int)'

对我来说似乎很有意义,我做错了吗?

这是代码。任何改进它的评论都将不胜感激。

#include<iostream>

using namespace std;

struct node
{
    int data;
    struct node* next;
};

void changeToNull(struct node** head)
{
    *head = NULL;
}

int listLength(struct node* head)
{
    struct node* curr = head;
    int i = 0;
    while(curr!=NULL)
        {
        i++;
        curr = curr->next;
        }
    return i;
}



void addAtTail(struct node* head)
{
    int length = listLength(head);
    addAtTail(head, length);
}

void addAtTail(struct node* head, int n)
{
    struct node* newNode = new node;
    struct node* curr = new node;
    newNode->next = NULL;
    newNode->data = n;
    curr= head;
    while(curr->next!=NULL)
    {
        curr = curr->next;
    }
    curr->next = newNode;
}

int main()
{
    //changeToNull(&head);
    addAtTail(head);
    printList(head);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

addToTail(head*){int n = length(head*);  addtoTail(head*, n)}

此处head*是typename而不是fromal参数。你需要这样做:

addToTail(node* head){int n = length(head);  addtoTail(head, n)}

注意: 您没有length(node*)定义,您定义了:

listLength(struct node*);

所以你应该使用int n = listLength(head)