Siemanko, muszę zrobić linked list z użyciem templates (anglojęzyczne studia, stąd nazwy angielskie). Niby wszystko fajnie się kompiluje, ale ciągle wypisuje mi int zamiast double pomimo takiego kodu:
#include <iostream>
using namespace std;
template <class T>
class Node
{
T data;
Node* next;
public:
Node(T d)
{
data = d;
next = 0;
}
~Node()
{
}
Node* getNEXT()
{
return next;
}
void setNEXT(Node<T>* target)
{
next = target;
}
T getDATA()
{
return data;
}
void print()
{
cout << "DATA: " << getDATA() << endl;
}
};
template <class T>
class LinkedList
{
private:
Node<T>* head;
public:
LinkedList()
{
head = 0;
}
~LinkedList()
{
Node<T>* etr = head;
while (etr)
{
etr = etr->getNEXT();
delete head;
head = etr;
}
}
void AddElement(int d)
{
Node<T>* ptr;
ptr = new Node<T>(d);
if (head == 0)
{
head = ptr;
}
else
{
Node<T>* temp;
temp = head;
while (temp->getNEXT())
{
temp = temp->getNEXT();
}
temp->setNEXT(ptr);
ptr->setNEXT(NULL);
}
}
void printlist()
{
Node<T>* ptr;
ptr = head;
while (ptr)
{
ptr->print();
ptr = ptr->getNEXT();
}
}
void reverse()
{
Node<T> *tmp, *pom;
if (head == NULL)
printf("Brak elementow");
else
{
tmp = head;
while (tmp->getNEXT() != NULL)
{
pom = tmp->getNEXT();
tmp->setNEXT(pom->getNEXT());
pom->setNEXT(head);
head = pom;
}
}
}
};
int main()
{
LinkedList<double> a;
a.AddElement(5.0);
a.AddElement(6.0);
a.AddElement(7.51);
a.printlist();
a.reverse();
a.printlist();
return 0;
}