Ich versuche, diese beiden Funktionen "extract" und "deleteList" zu implementieren und irgendwie komme ich nicht klar. Ich weiß, wie eine verkettete Liste funktioniert, aber ich bin neu in der Programmierung und kann einfach keinen Algorithmus finden. Könnte ich um ein paar Tipps bitten?
Ich möchte, dass die extract-Funktion eine Liste von Werten zurückgibt, die das Prädikat erfüllen, und diese aus der Originalliste entfernt (deshalb wird sie als Referenz übergeben).
Ich möchte, dass die delete-Funktion alle löscht, die denjenigen entsprechen, die aus dem Argument übergeben werden.
Mein Code sieht so aus:
#include
#include
using namespace std;
template
struct Node
{
T data;
Node* next;
};
template
void showList(const Node* head)
{
while(head->next != NULL)
{
cout<data<<" ";
head = head->next;
}
cout<
Node* arrayToList(const T tab[], size_t size)
{
Node *prev;
for(int i = size-1; i>=0 ; i--){
Node *p = new Node;
p->data = tab[i];
p->next = prev;
prev = p;
}
return prev;
}
template
Node* extract(Node*& head, bool (*predicate)(const T&))
{
}
template
void deleteList(Node*& head)
{
//delete passed in
}
bool isEven(const int& n)
{
return n%2 == 0;
}
bool isLong(const string& s)
{
return s.size() >=5;
}
Danke, Leute!