[英]cpp modified struct stack having addresses of both neighbours
I'm trying to make a hybrid of a stack and a queue: 我正在尝试将堆栈和队列混合在一起:
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;
}
I can assign ->next value without a problem. 我可以分配->下一个值没有问题。 The issue is with the ->prev value.
问题出在-> prev值。 It does not get proper value.
它没有获得适当的价值。 Actually it does, but once outside the function it tends to lose it:
确实可以,但是一旦超出函数,它就会丢失:
lastNOTE: 0x9497de8
last->prev:0
pv: 0x9497ef0
pv->prev: 0x9497de8
(outside the function: cout << newNote<<endl<<newNote->prev<<endl;
): (在函数外部:
cout << newNote<<endl<<newNote->prev<<endl;
):
newNote: 0x9497e98
newNote->prev: 0
Why ->prev value is not being assigned? 为什么-> prev值未分配?
I commented out and rewrote 2 lines: 我注释掉并重写了两行:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.