Leetcode 234 Palindrome Linked List

来源:互联网 发布:校园预防网络诈骗ppt 编辑:程序博客网 时间:2024/06/06 05:08

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……所以有些小的地方也要注意,否则就是坑自己了。
0 0