struct Node {   Node() : name(""), prev(0), next(0), last(0), id(0) {}   string name;   int id;   struct Node* prev;   struct Node* next;   struct Node* last; } Node* Node_pushback(Node* node, const string & name) {   Node* ptr = 0;   ptr = new Node();   ptr->name = name;     if(node == 0)   {      node = ptr;      node->last = ptr;   }   else   {      ptr->id = node->last->id + 1;      node->last->next = ptr;      ptr->prev = node->last;      node->last = ptr;   }     return node; } void Node_delete(Node* node) {   Node* run = 0;   while(run = node)   {      node = node->next;      delete run;   } } Node* Node_readin() {   Node* node = 0;   string temp = "";     while(1)   {       cin >> temp;       if(temp == "ENDE") break;       node = Node_pushback(node, temp);       if(node->last->id == MAXANZAHL-1) break;   }     return node; }