回文链表
Palindrome Linked-list
这是我的代码。
这个概念是通过快速和慢速两个指针遍历整个链表,一旦慢速在中间,将反转链表并将其与快的后半部分进行比较。
/**
* 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;
}
};
我遇到了这个小错误,请帮助纠正代码
Line 22: Char 15: error: assigning to 'ListNode *' from incompatible
type 'ListNode'
slow= reverse(slow);
首先,正如您在下方看到的那样,您的反向函数 returns 是 ListNode 类型的对象。
ListNode reverse(ListNode* head)
{
ListNode* prev = NULL;
while (head != NULL) {
ListNode* nextnode = head->next;
head->next = prev;
prev = head;
head = nextnode;
}
return prev;
}
但是您愿意 return 类型为 ListNode* 的“prev”,因此我建议您将 return 类型从“ListNode”更改为“ListNode*”像这样的反向函数:
ListNode* reverse(ListNode* head)
这是我的代码。
这个概念是通过快速和慢速两个指针遍历整个链表,一旦慢速在中间,将反转链表并将其与快的后半部分进行比较。
/**
* 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;
}
};
我遇到了这个小错误,请帮助纠正代码
Line 22: Char 15: error: assigning to 'ListNode *' from incompatible type 'ListNode'
slow= reverse(slow);
首先,正如您在下方看到的那样,您的反向函数 returns 是 ListNode 类型的对象。
ListNode reverse(ListNode* head)
{
ListNode* prev = NULL;
while (head != NULL) {
ListNode* nextnode = head->next;
head->next = prev;
prev = head;
head = nextnode;
}
return prev;
}
但是您愿意 return 类型为 ListNode* 的“prev”,因此我建议您将 return 类型从“ListNode”更改为“ListNode*”像这样的反向函数:
ListNode* reverse(ListNode* head)