2013-05-25 188 views
0

我当前正在学习链接列表如何在C++中工作,并且我已经编写了这段代码,它给了我编译错误,并且我没有得到我在早期版本的代码中获得的resalts。这是我以前丢失的代码的早期版本。链接列表和节点

所以我需要帮助:

应该如何add函数(在列表中最后一个把一个元素)是什么样子?

我需要向解构器添加什么?

而remove_if(T & t)表示应删除所有具有值t的元素,remove_if(谓词& pred)表示应删除所有元素pred返回true?

我需要在T>之间添加什么?

我的代码,我已经编辑:

#include <iostream> 
    using namespace std; 

    template <class T> 
    class List; 

    template <class T> 
    class Node { 
    public: 
     Node (T *t) : data(t), next(0) {} 
     ~Node(); 
    private: 
     T *data; 
     Node* next; 
     friend class List<T>; 
    }; 

    template <class T> 

    class Predicate { 
    public: 
     Predicate() {} 
     virtual bool operator()(const T& v) = 0; 
    }; 

    template <class T> 
    class List { 
    public: 
     List() : first(new Node<T>(T())) {} //"dummy"-node 

     void add(T *t); 
     void remove_if(T t); 
     void remove_if(Predicate<T> &pred); 
     void print(); 

    private: 
     Node<T> *first; 
    }; 

主营:

int main() 
    { 

     List<int> intlista; 
     intlista.add(new int(1)); 
     intlista.add(new int(2)); 
     intlista.add(new int(3)); 
     intlista.add(new int(2)); 
     intlista.add(new int(4)); 
     intlista.add(new int(5)); 
     intlista.add(new int(6)); 

     intlista.print(); 

     intlista.remove_if(2); 
     intlista.print(); 

     Between<int> one_to_four(1,4); 
     intlista.remove_if(one_to_four); 
     intlista.print(); 
    } 

写道:

{ 1 2 3 2 4 5 6 } 
    { 1 3 4 5 6 } 
    { 5 6 } 
+2

错误,那你什么 – juanchopanza

+0

您需要出示'名单:: add'的定义页眉??? –

+0

@juanchopanza “之间未在此区域中声明” “期望初级表达式在”int“” “之前预期;在”i nt“” “one_to_four没有在这个区域声明” –

回答

0

这实际上并没有回答你的问题,而是:

template <class T> 
class Node { 
public: 
    Node (T *t) : data(t), next(0) {} 
    ~Node(); 
private: 
    T *data; 
    Node* next; 
    friend class List<T>; 
}; 

在链表中存储指向T的指针似乎不对。模板链表的整点是,存储的数据可以直接存储在列表中,因为是(如果,不管什么好或坏的理由,要存储int *在列表中,然后你让List<int *> list;

现在为您的实际问题: 是您的类Between一个如果是这样,你有没有包括它

+0

嗨。之间应该是一个预测,所以程序可以编译,并能够运行 –

+0

错误“之间未声明”说,该类尚未宣布... –

+0

是 - 但我需要去在一个问题在一次,我可以得到如何写一个add()方法和我应该添加到解构器的帮助吗? –