所以我有链表类和节点结构。这是代码:
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);
答案 0 :(得分:1)
您的类名为linkedlist
,但您的构造函数为list()
。应将其命名为linkedlist()
,因为构造函数和类名应该匹配。
答案 1 :(得分:0)
您的课程被命名为链表
a),但是您的类声明中没有提及“ add”,并且
b)您的函数“添加”没有提及“链表”的类成员。
类声明应声明所有成员函数,包括“ add”,并且函数定义需要包含“链表”的类成员。
对于MCVE,您的目标是最小化(声明和定义),所以也许您的首要目标应该是获取“ linkedlist :: add()”进行编译。并添加最少的附加功能(即一次添加一个),直到您掌握了它为止。