Двусвязный список с++
Пишу задачу на реализацию дека: из первого двусвязного списка переписать во второй список элементы после максимума. Вся проблема в том, что элементы второго дека не выводятся, т.е. на экране появляется уведомление о том, что я добавил в дек элемент, но при вызове функции вывода ни один из элементов не выводится. Не могу найти ошибку. Помогите, пожалуйста.
#include <iostream>
#include <ctime>
#include <string>
#include <stdlib.h>
using namespace std;
struct doubleList {
int data;
doubleList* ptrNext;
doubleList* ptrPrev;
};
doubleList* push(doubleList* head, int value) {
doubleList* newHead = new doubleList;
newHead->data = value;
newHead->ptrPrev = NULL;
newHead->ptrNext = head;
if (head == NULL) {
return newHead;
}
head->ptrPrev = newHead;
return newHead;
}
int findMax(doubleList* head,doubleList* head2) {
doubleList* tempPtr = head;
doubleList* pointer = head2;
int max = tempPtr->data;
while (tempPtr) {
if (tempPtr->data > max) { max = tempPtr->data; }
tempPtr = tempPtr->ptrNext;
}
cout << "Максимум: " << max << endl << endl << endl;
return max;
}
void task(doubleList* head, doubleList* head2,int max) {
doubleList* ptr = head;
while (ptr->data!=max) {
ptr=ptr->ptrNext;
}
cout << "Дошли до максимума" << endl;
if (!ptr->ptrNext){
cout << "Нечего добавить во второй дек, т.к. элемент крайний!"; return;
}
while (ptr) {
head2 = push(ptr, ptr->data);
cout << "Добавили во второй дек: " << ptr->data << endl;
ptr=ptr->ptrNext;
}
}
void printDoubleList(doubleList* head) {
doubleList* ptr = head;
for (int i = 1; ptr != NULL; i++) {
cout << i << " элемент дека: "<<ptr->data<<endl;
ptr = ptr->ptrNext;
}
}
void deleteDoubleList(doubleList* head) {
doubleList* tempPtr;
while (head) {
tempPtr = head;
head = head->ptrNext;
delete tempPtr;
}
}
int main()
{
setlocale(0 ,"");
doubleList* head = NULL;
doubleList* head2 = NULL;
int size;
cout << "Введите размер дека: "; cin >> size;
for (int i = 0; i < size; i++) {
int c = rand() % 100 - 50;
cout << "Положили в дек: " << c << endl;
head = push(head, c);
}
int max=findMax(head, head2);
cout << "Первый дек: " << endl;
printDoubleList(head);
task(head,head2,max);
cout << "Второй дек: " << endl;
printDoubleList(head2);
cout << "Деки удалены!";
deleteDoubleList(head);
deleteDoubleList(head2);
}