Я хочу убедиться, прежде чем добавлять значение в связанный список, если число нечетное, я хочу добавить его в голову (мой псевдоним слева), если еще я хочу добавить его в последний (мой псевдоним правильный) вот мой код Структура узла
struct Node{
int data;
Node *next;
};
Класс связанного списка
class LinkedList{
Node *left;
Node *right;
public:
LinkedList(){
left = NULL;
right = NULL;
};
void insert(int value)
{
Node *t = new Node();
t->data = value;
t->next = left;
left = t;
if (right == NULL)
right = t;
}
void append(int value)
{
Node *temp = new Node();
temp->data = value;
temp->next = NULL;
right = temp;
if (left == NULL)
left = temp;
}
void add(int value){
if (value % 2 == 0)
append(value);
else
insert(value);
}
void print(){
Node *node = left;
while(node != NULL)
{
cout << node->data << " ";
node = node->next;
}
}
};
в основном методе
LinkedList list = LinkedList();
list.add(9);
list.add(16);
list.add(12);
list.add(12);
list.add(7);
list.print();
но выход:
12 12 16 9
Вы не задали вопрос.
Что вы ожидали на выходе?
Вы забыли связать последний (самый правый) узел с новым узлом в append()
. Перед обновлением right
необходимо добавить:
if (right != nullptr) { right->next = temp; }
Так станет:
void append(int value)
{
Node *temp = new Node();
temp->data = value;
temp->next = NULL;
if (right != nullptr) { right->next = temp; }
right = temp;
if (left == NULL)
left = temp;
}
Также не забывайте свой деструктор/конструктор копирования/оператор присваивания, чтобы убедиться, что вы в безопасности с выделенной памятью!
Как может первым в вашем посте быть "Как я уже упоминал"?