我目前正在学习链接列表如何在 C++ 中工作,并且我已经编写了这段代码,这给了我编译错误,并且我没有得到我在早期版本的代码中得到的结果。这是我之前丢失的代码的早期版本。
所以我需要帮助:
add 函数(将元素放在列表最后)应该是什么样子?
我需要向解构函数添加什么?
而应该删除所有值为t的元素的remove_if(T&t),应该删除所有元素pred的remove_if(predicate&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 }