Как поменять хранение с односвязного списка на двусвязный?
Написал код, где вводятся заявки, эти заявки хранятся в виде односвязного списка, а нужно в виде двусвязного
Вот код:
#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;
}
}