【问题标题】:Going Backwards Through a doubly linked list通过双向链表向后走
【发布时间】:2014-01-02 16:37:45
【问题描述】:
我无法理解如何初始化节点结构中的 prev 指针。我看到接下来我将CurrPtr->Next 设置为一个新节点,并且您的当前指针设置为CurrPtr->Next,这是您刚刚创建的新节点。但是你怎么倒退。是这个CurrPtr->Prev=CurrPtr吗?我只是很难想象它。
While(cont!=-1)
{
cin>>cont;
CurrPtr->Next=new Node;
CurrPtr=CurrPtr->Next;
}
【问题讨论】:
标签:
pointers
linked-list
nodes
singly-linked-list
doubly-linked-list
【解决方案1】:
在这里做一些假设......
这样的陈述:
CurrPtr =
正在说“我正在将我在列表中的当前位置设置为 X”。
CurrPtr->Prev =
或
CurrPtr->Next =
正在分别构建从当前节点到前一个和下一个节点的链接。
你的陈述
CurrPtr->Prev=CurrPtr
不会将您移到您的列表中,它只是将前一个节点设置为当前节点,从而创建一个闭环,尝试移动到 Prev 将使您返回到当前节点。当您创建一个新节点时,您还可以通过将其链接到当前节点来设置它与其他节点的链接。
While(cont!=-1)
{
cin>>cont;
CurrPtr->Next=new Node;
CurrPtr->Next->Prev=CurrPtr;
}
一旦你建立了链接,你就可以从当前节点移动到下一个节点,然后回到你的起始节点,因为你已经设置了 Prev 指针。
CurrPtr = CurrPtr->Next;
CurrPtr = CurrPtr->Prev;