void push_front(const dataType &item)
{
head=new dnode<dataType> (item,NULL,head);
if (!empty())
head->next->prev=head;
else
tail=head;
numItems++;
}
我在这里有一段代码,但是我不太了解,
head->next->prev=head
行是什么?谁能解释一下,谢谢 最佳答案
如果列表如下所示:
***************
head->*Data: XXX *
*Prev: NULL * ***************
*Next: --------> * Data: YYY *
*************** <----Prev: * ***************
* Next: --------> * Data: ZZZ *
***************<------Prev: *
* Next: NULL *
***************
现在:添加新项目
head = new dnode<dataType> (AAA,NULL,head);
***************
head->*Data: AAA *
*Prev: NULL * ***************
*Next: --------> * Data: XXX *
*************** * Prev: NULL * ***************
* Next: --------> * Data: YYY *
***************<------Prev: * ***************
* Next: --------> * Data: ZZZ *
***************<------Prev: *
* Next: NULL *
***************
请注意链中的第二项。 Prev成员仍为NULL。
因此,将链接从第二个项目添加回头部。
head->next->prev=head;
***************
head->*Data: AAA *
*Prev: NULL * ***************
*Next: --------> * Data: XXX *
***************<-----Prev: * ***************
* Next: --------> * Data: YYY *
***************<------Prev: * ***************
* Next: --------> * Data: ZZZ *
***************<------Prev: *
* Next: NULL *
***************
因此,您可以想到以下这一行:
head->next->prev=head;
// This is equivelant too:
oldHead = head->next;
oldHead->prev = head;
关于c++ - 链表推前,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/960952/