Bidirectional list

Actually, I have a list, I set it this way

 struct Node       //Структура являющаяся звеном списка
{
  int x;     //Значение x будет передаваться в список

 Node *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка
 };

 class List   //Создаем тип данных Список
 {
   Node *Head,*Tail; //Указатели на адреса начала списка и его конца
public:
 List():Head(NULL),Tail(NULL){}; //Инициализируем адреса как пустые
 ~List(); //Деструктор
 void Show(); //Функция отображения списка на экране
 void Add(int x); //Функция добавления элементов в список
};

The problem is that in the function of adding an element (add), not 1 variable is added, but 6 . So how do I change the code to do all this? that is, if the problem is the author's last name - book title - year of publication-price - number of copies-total cost

I add an element like this:

 void List::Add(int x)
  {
  Node *temp=new Node; //Выделение памяти под новый элемент структуры
 temp->Next=NULL;  //Указываем, что изначально по следующему адресу пусто
 temp->x=x;//Записываем значение в структуру

 if (Head!=NULL) //Если список не пуст
 {
   temp->Prev=Tail; //Указываем адрес на предыдущий элемент в соотв. поле
   Tail->Next=temp; //Указываем адрес следующего за хвостом элемента
   Tail=temp; //Меняем адрес хвоста
 }
 else //Если список пустой
 {
    temp->Prev=NULL; //Предыдущий элемент указывает в пустоту
    Head=Tail=temp; //Голова=Хвост=тот элемент, что сейчас добавили
 }
}
Author: Deleted, 2013-09-26

2 answers

And what exactly is the problem?

You just need to redo

  1. the Node structure (adding the fields " author's last name-book title - year of publication – price - number of copies – total cost")
  2. the Add function (passing the same parameters to it...)
 2
Author: ProkletyiPirat, 2013-09-26 15:45:32
struct Node       //Структура являющаяся звеном списка
{
// тут нужно дописать поля:
  string Family_autor;     //поле фамилия автора 
  string Name_book;        //поле название книги 
  int Year;                //поле год издания 
  int Price;               //поле цена 
  int Count;               //поле количество экземпляров 
  int Total_cost;          //поле общая стоимость

 Node *Next,*Prev; //Указатели на адреса следующего и предыдущего элементов списка
 };

 class List   //Создаем тип данных Список
 {
   Node *Head,*Tail; //Указатели на адреса начала списка и его конца
public:
 List():Head(NULL),Tail(NULL){}; //Инициализируем адреса как пустые
 ~List(); //Деструктор
 void Show(); //Функция отображения списка на экране
 void Add(int x); //Функция добавления элементов в список
};


void List::Add(string family_autor, string name_book, int year, int price, 
int count, int total_cost)//передаем параметры
  {
  Node *temp=new Node; //Выделение памяти под новый элемент структуры
 temp->Next=NULL;  //Указываем, что изначально по следующему адресу пусто
//Записываем значение в структуру
 temp->Family_autor=family_autor;
 temp->Name_book=name_book;
 temp->Year=year;
 temp->Price=price;
 temp->Count=count;
 temp->total_cost=total_cost;
 if (Head!=NULL) //Если список не пуст
 {
   temp->Prev=Tail; //Указываем адрес на предыдущий элемент в соотв. поле
   Tail->Next=temp; //Указываем адрес следующего за хвостом элемента
   Tail=temp; //Меняем адрес хвоста
 }
 else //Если список пустой
 {
    temp->Prev=NULL; //Предыдущий элемент указывает в пустоту
    Head=Tail=temp; //Голова=Хвост=тот элемент, что сейчас добавили
 }
}
 1
Author: Галина, 2016-12-10 22:42:15