C - 在不使用任何额外指针的情况下反转双链表



im 试图在不使用任何额外指针的情况下反转双链表。我只有指向双链表的第一个节点的头部指针。

这是我反转链表的函数:

int reverse(){
if(head==NULL || head->next==NULL){
return 0;
}
else{
head->prev=head->next;
head->next=NULL;
head->prev->prev=head->prev->next;
head->prev->next=head;
head=head->prev;
while(head->prev==NULL){
head->prev->prev=head->prev->next;
head->prev->next=head;
head=head->prev;
}
}}

如果我的链表有数据 1,2,3,4,5 并且在运行反向函数后,当我尝试显示数据时,我得到的输出:2,1(而不是 5,4,3,2,1(

while 语句中存在错误while(head->prev==NULL)正确的代码是while(head->prev!=NULL)

所以函数的正确代码是:

int reverse(){
if(head==NULL || head->next==NULL){
return 0;
}
else{
head->prev=head->next;
head->next=NULL;
head->prev->prev=head->prev->next;
head->prev->next=head;
head=head->prev;
while(head->prev!=NULL){
head->prev->prev=head->prev->next;
head->prev->next=head;
head=head->prev;
}
}}

相关内容

  • 没有找到相关文章

最新更新