Я пытаюсь сделать гибрид из стека и очереди:
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
Почему -> предыдущее значение не присваивается?
Я закомментировал и переписал 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;
}
Других решений пока нет …