Code:
#include <iostream>
using namespace std;
template <class T>class list{
protected:
typedef struct node{
node* prev;
T* data;
node* next;
};
node* first;
node* last;
public:
list();
void push_back(T& t);
void pop_back();
T& front();
T& back();
node& end();
node& begin();
void print_list();
};
template <class T>
list<T>::list(){
first=0;
last=0;
};
template <class T>
T& list<T>::back(){
return last->data;
}
template <class T>
T& list<T>::front(){
return first->data;
};
template <class T>
list<T>::node& list<T>::end(){ //error in this line.
return *last;
}
template <class T>
list<T>::node& list<T>::begin(){ //error in this line.
return *first;
};
template <class T>
void list<T>::push_back(T& t){
node *n={0,&t,0};
if(front==0){
first = n;
last = n;
}else{
last->next=n;
n->prev=last;
last = n;
}
}
template <class T>
void list<T>::pop_back(){
if(last == first){
last=0;
first=0;
}else{
last->prev->next=0;
last=last.prev;
}
}
template <class T>
void list<T>::print_list(){
node* p = front;
while(p!=0){
p=p->next;
cout << p->data << "-";
}
cout << endl;
};
Comment