-Code unter Verwendung für mit Rekursion verlinkte Liste Rückwärts fahren, mit STLReversierung mit Rekursion verlinkte Liste, STL
#include<iostream>
#include<conio.h>
#include<list>
using namespace std;
template<typename T>
class node
{
public:
T data;
node<T> *next;
node(){ next = NULL; }
node(const T& item, node<T> *nextnode = NULL)
{
data = item;
next = nextnode;
}
};
template<typename T>
class Reverse_list
{
private:
node<T> *head;
void reverse(node<T> *front);
public:
Reverse_list(){ head = NULL; }
//template<typename T>
void Reverse();
template<typename T>
void Display(list<T>& alist);
};
int main()
{
Reverse_list <int> rl;
list<int> intlist;
int size, no;
cout << "Size of List ?? ";
cin >> size;
for (int i = 1; i <= size; i++)
{
cout << "Enter the " << i <<" "<< "element";
cin >> no;
intlist.push_front(no);
}
rl.Display(intlist);
rl.Reverse();
rl.Display(intlist);
_getch();
return 0;
}
template<typename T>
void Reverse_list<T>::Display(list<T>& alist)
{
list<int>::iterator iter = alist.begin();
while (iter != alist.end())
{
cout << *iter << " ";
iter++;
}
}
template<typename T>
void Reverse_list<T>::reverse(node<T> *front)
{
if (front->next == NULL)
{
head = front;
return;
}
reverse(front->next);
node<int> *back = front->next;
back->next = front;
front->next = NULL;
}
template<typename T>
void Reverse_list<T>::Reverse()
{
reverse(head);
}
Der obige Code erzeugt zwei Fehler.
Fehler 1) Keine Instanz der Funktionsvorlage entspricht der Argumentliste. (Keine Fehlernummer.)
Wenn ich Zeile 1 (erwähnt in einem Code) entferne, dann ist der obige Fehler nicht mehr. (Warum?)
Fehler 2) C2783: 'Leere Reverse_list :: Reverse1 (void)': konnte nicht Template-Argument für 'T'
ableiten Wie oben Fehler zu lösen.
Im obigen Programm, I wollte "head" node (die privat ist) passieren, wie
Argumentfunktion umkehrt. Aber wir können nicht auf private Mitglieder außerhalb der Klasse zugreifen. Also passierte ich indirekt. Ist das ein richtiger Weg? Oder gibt es eine andere Möglichkeit, auf private Daten zuzugreifen?
Warum brauchen Sie eine Reverse-Funktion eine Vorlage zu sein? – teivaz
Alles falsch mit 'intlist.reverse()'? – juanchopanza
@ teivaz: Eigentlich möchte ich lernen, STL in C++. Also habe ich begonnen, mit einfacher Programmierung zu lernen. Aber befürchte, dass mein Professor wegen reiner STL denkt, dass ich Logik nicht kenne. Also Mittelweg ist, schreibe ein Programm mit STL und unserer Logik. Deshalb habe ich die verknüpfte Liste mit STL akzeptiert, aber mit der Logik umgekehrt. – Tushar