Как поменять хранение с односвязного списка на двусвязный?

Написал код, где вводятся заявки, эти заявки хранятся в виде односвязного списка, а нужно в виде двусвязного

Вот код:

#include <iostream>
#include <string>
using namespace std;

struct Node
{
    char point[100];    //- пункт назначения;
    int reis;        //- номер рейса;
    char name[20];    //- фамилия пассажира;
    char surname[20];    //- имя
    char patr[20];    //- отчество
    char date[10];        //- желаемая дата вылета;
    Node* next;    // указатель на структуру заявка.
};

int Menu();
void addNode(Node* first); // - добавление заявок в список;
void deleteNode(Node*& first); // - удаление заявок по заданному номеру рейса
void outNode(Node* first); // - вывод всех заявок.
void outNodeNum(Node* first); // вывод одной заявки

int main()
{
    setlocale(LC_ALL, "Russian");
    Node* first = new Node;
    int n = 1;
    cout << "-------Данные о заявке-------\n\n";
    cout << "Введите пункт назначения > ";
    cin >> first->point;
    cout << "Введите номер рейса > ";
    cin >> first->reis;
    cout << "Введите фамилию пассажира > ";
    cin >> first->name;
    cout << "Введите имя пассажира > ";
    cin >> first->surname;
    cout << "Введите отчество пассажира > ";
    cin >> first->patr;
    cout << "Введите дату вылета > ";
    cin >> first->date;
    cout << "\n";
    first->next = NULL;

    int k;
    while ((k = Menu()) != 0)
    {
        switch (k)
        {
        case 1: addNode(first); break;
        case 2: outNode(first); break;
        case 3: outNodeNum(first); break;
        case 4: deleteNode(first); break;
        case 5: break;
        default: cout << "Введите число от 1 до 5: ";
        }
    }
    return 0;

    getchar(); // пауза


    return 0;
}


int Menu()
{
    cout << "\n";
    cout << "1 - Добавить заявку\n";
    cout << "2 - Вывести все заявки\n";
    cout << "3 - Вывести заявку по номеру рейса и дате вылета\n";
    cout << "4 - Удалить заявку\n";
    cout << "0 - Выход\n";
    cout << "\n";
    cout << "Введите нужный пункт: ";

    short k;
    cin >> k;
    cout << "\n";
    return k;
}


void addNode(Node* first)
{
    Node* pv = new Node;
    Node* p = first->next;


    cout << "\nДанные о заявке \n";
    cout << "Введите пункт назначения > ";
    cin >> pv->point;
    cout << "Введите номер рейса > ";
    cin >> pv->reis;
    cout << "Введите фамилию пассажира > ";
    cin >> pv->name;
    cout << "Введите имя пассажира > ";
    cin >> pv->surname;
    cout << "Введите отчество пассажира > ";
    cin >> pv->patr;
    cout << "Введите дату вылета > ";
    cin >> pv->date;
    cout << "\n";

    first->next = pv;
    pv->next = p;
}

void outNode(Node* first)
{
    Node* pv = first;
    while (pv)
    {
        cout << "\nДанные о заявке \n";
        cout << "\nПункт назначения > " << pv->point;
        cout << "\nНомер рейса > "; cout << pv->reis;
        cout << "\nФамилия пассажира > " << pv->name;
        cout << "\nИмя пассажира > " << pv->surname;
        cout << "\nОтчество пассажира > " << pv->patr;
        cout << "\nДата вылета > " << pv->date << "\n\n\n";
        pv = pv->next;
    }
}

void outNodeNum(Node* first)
{
    int num;
    string dat;
    Node* pv = first;
    cout << "Введите номер рейса: ";
    cin >> num;
    cout << "Введите дату: ";
    cin >> dat;
    int n = 1, fl = 0;
    while (pv)
    {
        if (pv->reis == num && pv->date == dat)
        {
            outNode(pv);
            break;
        }
        pv = pv->next;
    }
}


void deleteNode(Node*& first)
{
    int num;
    cout << "Номер рейса, заявку по которому удалить: ";
    cin >> num;
    Node* temp = first;
    Node* el = NULL;
    if (first && first->reis == num)
    {
        el = first;
        first = first->next;
        delete el;
        return;
    }
    while (temp->next)
    {
        if (temp->next->reis == num)
        {
            el = temp->next;
            temp->next = el->next;
            delete el;
            break;
        }
        temp = temp->next;
    }
}

Ответы (0 шт):