Нужен совет с очередью связанных списков
Здравствуйте, я пытаюсь сделать динамическую очередь с помощью связанного списка для создания ее узлов, но у меня есть некоторые проблемы с методом вставки, в какой-то момент данные, которые я передаю функции, теряются, и она возвращает мусор.
Основная проблема заключается в Nodo* PushQ(Nodo *nodo, int val)
Код
#include <iostream> using namespace std; // Create new node struct Nodo{ int val; Nodo *next; }; class Queue { public: Nodo *nodo, *end, *front; // [front]->[node]->[end]->NULL Queue() // Constructor { nodo = end = front = NULL; } Nodo* PushQ(Nodo *nodo, int val) // Insert value { if(nodo == NULL) // At this point is all right, but next, it looses the data and pass to val trash { nodo = new Nodo; nodo->val = val; // At this point the data is gone, now it shows trash front = nodo; // front end front->next = NULL; // [data|*next]->[data|*next]->NULL end = front; } else { nodo = front->next; front = nodo; front->next = NULL; } return nodo; } int PopQ(Nodo *nodo) // Show queue data { int aux = 0; nodo = new Nodo; nodo = end; while(nodo) // Infinite loop { cout << nodo->val << endl; aux = nodo->val; } return aux; } }; int main() { Queue *Q1 = new Queue; Q1->nodo = Q1->PushQ(Q1->nodo, 5); Q1->nodo = Q1->PushQ(Q1->nodo, 20); Q1->nodo = Q1->PushQ(Q1->nodo, 6); Q1->nodo = Q1->PushQ(Q1->nodo, 7); Q1->nodo = Q1->PushQ(Q1->nodo, 33); Q1->PopQ(Q1->nodo); return 0; }
Что я уже пробовал:
Некоторая отладка с Visual Studio 2015, но я не понимаю, почему появляется корзина