获取'rotate the doubly linked list'的运行时错误



我发布这个问题是因为我编写的任何链表问题都会出现运行时错误。我一定犯了一个一般性的错误。请帮我找出的错误是什么

这只是其中一个问题:https://practice.geeksforgeeks.org/problems/rotate-doubly-linked-list-by-p-nodes/1

这是我的解决方案:(我只想完成这个功能(

struct node*update(struct node* start,int p)
{
//Add your code here
node *last=start,*nxt,*i=start;
int n=1;;
while(last!=NULL){
last=last->next;
n+=1;
}
cout<<last->data<<"n";
p=p%n;
for(int i=0;i<p;i++){
nxt=start->next;
last->next=start;
start->next=NULL;
start->prev=last;
nxt->prev=NULL;
last=last->next;
start=nxt;
}
return start;

}


请告诉我这个代码出了什么问题。

提前感谢

所以,您正在尝试使用链表,这很好。

链表就像一个游戏,一个"指针游戏"。你似乎在"逻辑游戏"中表现得很好,而在"指针游戏"中却缺少一些东西。

通过你提到的语句-"我正在为我编码的任何链表问题获取运行时错误。",我建议你学习如何调试代码以及如何进行代码的自检。

回到您的代码,您正在遍历整个列表以访问最后一个节点。为了实现这个目标,您使用了while循环。但是,看看您在其中使用了什么条件语句,以及执行while循环后会留下什么。

node *last=start,*nxt,*i=start;
int n=1;;
while(last!=NULL){
last=last->next;
n+=1;
}

首先,请尝试检查您的代码是否只包含大小为2或3的链表。

您的代码不是将n的值给定为[size(of linked list(+1],然后剩下最后一个指针指向NULL吗。那么,当last为NULL时,如何获取last->data呢。

只是简单的指针处理不当。否则,后面代码部分的逻辑就可以了。

需要修改

最后一个节点是下一个指向NULL的节点。所以只运行循环到那个节点。

int n=1;;
while(last->next!=NULL){ //last->next instead of last
last=last->next;
n+=1;
}

希望这会有所帮助。

不断询问,不断增长:(

相关内容

  • 没有找到相关文章

最新更新