未在带有标头的范围内声明(链接列表)

时间:2018-06-19 12:30:53

标签: c++ linked-list

所以我有链表类和节点结构。这是代码:

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

class linkedlist{
    private:
    node *head, *tail;
    public:
    linkedlist()
    {
      head=NULL;
      tail=NULL;
    }

  };

例如,当我调用一个使用头和尾来添加值的函数时,编译器会说未在此范围内声明节点和尾。

编辑:这是我的主文件中没有声明头尾的函数

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "func.h"
using namespace std;        
int errorCode;
void add(tADT &adt, tValue value, int pos){
    node *pre=new node;
    node *cur=new node;
    node *temp=new node;
    cur=head;
    for(int i=1;i<pos;i++)
    {
      pre=cur;
      cur=cur->next;
    }
    temp->data=value;
    pre->next=temp; 
    temp->next=cur; 
}

我的函数调用:

cin >> val >> pos;
add(adt, val, pos);

2 个答案:

答案 0 :(得分:1)

您的类名为linkedlist,但您的构造函数为list()。应将其命名为linkedlist(),因为构造函数和类名应该匹配。

答案 1 :(得分:0)

您的课程被命名为链表

a),但是您的类声明中没有提及“ add”,并且

b)您的函数“添加”没有提及“链表”的类成员。

类声明应声明所有成员函数,包括“ add”,并且函数定义需要包含“链表”的类成员。

对于MCVE,您的目标是最小化(声明和定义),所以也许您的首要目标应该是获取“ linkedlist :: add()”进行编译。并添加最少的附加功能(即一次添加一个),直到您掌握了它为止。