您的位置:首页 > 其它

Leetcode 234 Palindrome Linked List

2016-10-12 17:43 363 查看

Leetcode 234 Palindrome Linked List

原题地址

题目描述: Given a singly linked list, determine if it is a palindrome.

思路

既然是判断它是不是回文单链表,也就是判断它的顺向和逆向是不是相同。我用的是最笨的办法,就是利用一个新的链表存储它的逆向,然后将两个链表的值从头到尾进行比较。逆向的方法是将原链表的每个结点每次插到新链表的头部。


实现

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode(int x) : val(x), next(NULL) {
}
* };
*/
class Solution {
public:
bool isPalindrome(ListNode* head) {
if(head==NULL)
return true;

bool flag=true;

//reverse生成新链表
ListNode* p3;
p3=head->next;
ListNode* revL=new ListNode(head->val);

while(p3){
ListNode* tmp=new ListNode(0);
tmp->val=p3->val;
tmp->next=revL;
revL=tmp;

p3=p3->next;
}

ListNode* p1;
p1=head;

ListNode* p2;
p2=revL;

while(p1 && p2){
if(p1->val!=p2->val)
flag=false;
p1=p1->next;
p2=p2->next;
}
return flag;
}
};


# ps: 刚开始由于不是很清楚LeetCode的初始化情况,将tmp初始化为0,结果改代码改到半夜1.30……所以有些小的地方也要注意,否则就是坑自己了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 单链表