У меня есть некоторые трудности с классом двусвязных списков, который является частью моего университетского проекта. Код класса такой:
class container
{
public:
class node
{
public:
node * prev;
node * next;
int value;
};
container(int v);
node *start; // first element of the list
node *finish; // last element of the list
void insert_start(node *start, int val);
void print_container();
}
Функция insert_start должна добавить элемент в начало списка. Код выглядит следующим образом:
void container :: insert_start(node *start, int val)
{
if(start!=NULL)
{
cout << "in insert_start" << endl;
cout << "number added:" << val << endl;
node *element = new node;
element->value=val;
element->next=start;
start=element;
start->prev=NULL;
}
else
{
cout << "List is empty" << endl;
}
}
И функция print_container должна распечатать мой связанный список. Код выглядит так:
void container::print_container()
{
node *tmp;
tmp = start;
while(tmp!=nullptr)
{
cout << tmp->value << endl;
tmp=tmp->next;
}
}
К сожалению, в моей программе есть две проблемы. Во-первых, кажется, что добавляется одно и то же случайное значение в добавленные элементы структуры данных. Во-вторых, ошибка сегментации при выполнении функции print_container. Я предполагаю, что это может быть ошибка (или ошибки) в функции insert_start, но я не совсем уверен в этом.
Вот тестовая программа:
int main(void)
{
int how_many_pieces;
container L(6);
L.insert_finish(L.finish,3);
cout << "added element: " << L.finish->value << endl;
L.insert_start(L.start,8);
cout << "added element: " << L.start->value << endl;
L.insert_start(L.start,12);
cout << "added element: " << L.start->value << endl;
//show elements of the L list
L.print_container();
cout << "\n";
return 0;
}
Спасибо за любую помощь.