判断是否为回文链表
我是采用先反转一整个链表再判断两个链表是否匹配,看不出来啥问题,但还是有错,求解答!
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
// 反转链表
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* pre = NULL;
// 保存下一个节点
struct ListNode* temp = head;
while(head) {
// 保存下一个节点的位置
temp = head->next;
// 反转链表
head->next = pre;
// 更新节点
pre = head;
head = temp;
}
return pre;
}
bool isPalindrome(struct ListNode* head){
// 反转后的链表
struct ListNode* newList = reverseList(head);
// 比较两个链表的值
while(head && newList) {
if(head->val != newList->val) {
return false;
}
head = head->next;
newList = newList->next;
}
return true;
}
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
// 反转链表
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* pre = NULL;
// 保存下一个节点
struct ListNode* temp = head;
while(head) {
// 保存下一个节点的位置
temp = head->next;
// 反转链表
head->next = pre;
// 更新节点
pre = head;
head = temp;
}
return pre;
}
bool isPalindrome(struct ListNode* head){
// 反转后的链表
struct ListNode* newList = reverseList(head);
// 比较两个链表的值
while(head && newList) {
if(head->val != newList->val) {
return false;
}
head = head->next;
newList = newList->next;
}
return true;
}
全部评论
你把链表给反转了,head还是你以为的那个head吗
相关推荐
10-12 18:27
哈尔滨理工大学 C++ 点赞 评论 收藏
分享
10-25 18:16
上海电力大学 Java 点赞 评论 收藏
分享