2013-11-02 2 views
0

Я пытаюсь создать функцию, которая будет передавать все элементы из одного списка в другой в классе deque. Например, если у вас есть список 1 {1,2,3} и список 2 {4,5}. То, что я собираюсь сделать, - передать все элементы внутри списка 2 в список 1, сделать его списком 1 {1,2,3,4,5} (упорядоченный не требуется), а после этого список 2 будет пустым. Тем не менее, список результатов, который я получаю, не совсем прав. Может ли кто-нибудь, что не так с моим кодом, пожалуйста? СпасибоПеренести все элементы из одного списка в другой в deque C++

void meld(Deque<E>& other) 
{ 

    DNode<E>* a = _head; 
    DNode<E>* b = _tail; 
    DNode<E>* c = other.get_head(); 
    DNode<E>* d = other.get_tail(); 
    DNode<E>* temp = c; 
    b->set_next(temp); 
    temp->set_prev(b); 
    _size += other.size(); 
    c = nullptr;    
} 

ответ

1

Вы, вероятно, необходимо установить содержание other быть пустым. Вы отправили только код c, но c - это локальная переменная, которая все равно выйдет за рамки. Вероятно, вам необходимо изменить other._head = 0.

Обратите внимание, что ваш код без необходимости устанавливает a и d. Аналогично, temp на самом деле не нужен: вместо этого вы можете использовать только c.

+0

Большое спасибо за помощь –

Смежные вопросы