cpp модифицированный стек структур, имеющий адреса обоих соседей

Я пытаюсь сделать гибрид из стека и очереди:

struct NOTE {
char vardas[20];
char pavarde[20];
char tel_nr[20]; // imamas ne INT, nes naudotojas gali pageidauti įvesti numerį: +<kodas-numeris> -- tarptautinis
int gim_data[3]; // ('1990', '09', '18')
NOTE *next=0;
NOTE *prev=0;
};

NOTE* addNote(NOTE* last, NOTE* nNOTE) {
NOTE *pv =new NOTE;

pv->prev = last;
printNOTE(last);
*pv->gim_data = *nNOTE->gim_data;
*pv->vardas = *nNOTE->vardas;
*pv->pavarde = *nNOTE->pavarde;
*pv->tel_nr = *nNOTE->tel_nr;
last->next = nNOTE;

cout<<"lastNOTE: " << last << endl;
cout << "last->prev:" << last->prev<<endl;
cout << "pv: "<<pv<<endl;
cout<<"pv->prev: " << pv->prev  <<endl;
cout << endl;

return nNOTE;
}

Я могу назначить -> следующее значение без проблем. Проблема заключается в значении -> prev. Это не получает правильное значение. На самом деле это так, но, оказавшись вне функции, он может потерять его:

lastNOTE: 0x9497de8
last->prev:0
pv: 0x9497ef0
pv->prev: 0x9497de8

(вне функции: cout << newNote<<endl<<newNote->prev<<endl;):

newNote: 0x9497e98
newNote->prev: 0

Почему -> предыдущее значение не присваивается?

0

Решение

Я закомментировал и переписал 2 строки:

    NOTE* addNote(NOTE* last, NOTE* nNOTE) {
NOTE *pv =new NOTE;

pv->prev = last;
printNOTE(last);
*pv->gim_data = *nNOTE->gim_data;
*pv->vardas = *nNOTE->vardas;
*pv->pavarde = *nNOTE->pavarde;
*pv->tel_nr = *nNOTE->tel_nr;
//        last->next = nNOTE;
last->next = pv;

cout<<"lastNOTE: " << last << endl;
cout << "last->prev:" << last->prev<<endl;
cout << "pv: "<<pv<<endl;
cout<<"pv->prev: " << pv->prev  <<endl;
cout << endl;

//        return nNOTE;
return pv;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]