回文链接列表



这是我的代码
概念是通过快速和慢速两个指针遍历整个链表,一旦慢速位于中间,就会反转列表,并将其与快速的后半部分进行比较。

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode() : val(0), next(nullptr) {}
*     ListNode(int x) : val(x), next(nullptr) {}
*     ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
bool isPalindrome(ListNode* head) {
ListNode *fast= head;
ListNode *slow= head;

while( fast!=NULL&&fast->next !=NULL)
{
fast=head->next->next;
slow=head->next;
}
slow= reverse(slow);
fast= head;

while(slow!=NULL)
{ 
if(fast->data!=slow->data)
return false
slow =slow->next;
fast=fast->next;
}
return true;
}
public: ListNode reverse(ListNode *head){
ListNode *prev = NULL;
while(head!=NULL)
{
ListNode* nextnode=head->next;
head->next=prev;
prev=head;
head=nextnode;

}
return prev;

}
};

我得到了这个小错误,plz帮助纠正代码

第22行:字符15:错误:从不兼容分配到"ListNode*"type"ListNode">
slow=反向(慢速(;

首先,正如您在下面看到的,您的反向函数返回ListNode类型的对象。

ListNode reverse(ListNode* head)
{
ListNode* prev = NULL;
while (head != NULL) {
ListNode* nextnode = head->next;
head->next = prev;
prev = head;
head = nextnode;
}
return prev;
}

然而,您愿意返回一个";prev";其类型为ListNode*,因此我建议您将返回类型从"更改为";ListNode";至";ListNode*";在你的反向功能中,比如:

ListNode* reverse(ListNode* head)

相关内容

  • 没有找到相关文章

最新更新