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; //Голова=Хвост=тот элемент, что сейчас добавили
}
}
0
2 answers
And what exactly is the problem?
You just need to redo
- the Node structure (adding the fields " author's last name-book title - year of publication – price - number of copies – total cost")
- 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