Как сделать круговой двусвязный список?
Я попытался составить круговой двусвязный список.Вот мой код.Он ничего не печатает. Я думаю, что оператор "If, Else", который находится в функции insertAfterLast, имеет некоторую проблему. В течение двух часов я ничего не соображаю. должен ли я использовать цикл "while" для поиска последнего узла?
Что я уже пробовал:
#ifndef CIRCULARDLL_H #define CIRCULARDLL_H #include <iostream> #include "Node.h" class CircularDLL { private: NodePtr top; public: void insertDataFromFile(); void print(); void insertAfterLast(int id, string name, string email, int age); };
-----------------------------------------------
(circularDLL.cpp)
#include "CircularDLL.h" void Circular::insertAfterLast(int id, string name, string email, int age) { NodePtr *newNode= new Node; newNode->stId = id; newNode->stName = name; newNode->stEmail = email; newNode->stAge = age; if (top == NULL) { top = newNode; return; } if (top->before == top) // Only one node in the list { top->next = newNode; top->before = newNode; newNode->next = top; newNode->before = top; } else { newNode->before= top->before; top->before->next = before; top->before= before; before->next = top; } }
-----------------------------------------------
#ifndef NODE_H #define NODE_H typedef Node* NodePtr; class Node { friend class CircularDLL; private: int stId; string stName; string stEmail; int stAge; NodePtr next; NodePtr before; };