我正在尝试使用reverseList()函数反转一个双向链表,如下所示,但是我没有得到我所期望的,我的逻辑上没有发现任何错误,但是帮助。
void reverseList(Node **head)
{
Node *i,*temp=*head;
while(temp!=NULL)
{
i=temp->next;
temp->next=temp->prev;
temp->prev=i;
/*This if block is to ensure that the head may never get a null value,
as temp is assigned to head after the loop,
ie, temp=i; doesn't execute only for the last iteration*/
if(i!=NULL)
temp=i;
}
*head=temp;
}
您无需在节点上进行任何操作即可反转双链表,因为所有节点已经以两种方式连接。所有相反的可能只是:
root = tail;