码迷,mamicode.com
首页 > 其他好文 > 详细

Palindrome Linked List

时间:2015-08-25 23:06:44      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

判断单链表是否为回文;

思想:利用来两个指针找到链表中点,将后半个链表反转。然后判断。

有个问题,下面的代码没有恢复原来的单链表。

 1 class Solution {
 2 public:
 3     bool isPalindrome(ListNode* head) {
 4         ListNode* ptr1,*ptr2,*tail;
 5         if(head==NULL||head->next==NULL)
 6         return true;
 7         ptr1 = head;
 8         ptr2 = head;
 9         tail = head;
10         while(tail->next!=NULL)
11             tail = tail->next;
12 
13         while(ptr2!=NULL && ptr2->next!=NULL)
14         {
15             ptr1=ptr1->next;
16             ptr2=ptr2->next;
17             if(ptr2->next!=NULL)
18                ptr2 = ptr2->next;
19         }
20 
21         ptr2 = ptr1;
22         ListNode* t1=NULL,*t2;
23         while(ptr2!=NULL)
24         {
25             t2 = ptr2->next;
26             ptr2->next = t1;
27             t1 = ptr2;
28             ptr2 = t2;
29         }
30         ListNode* l1=head,*l2=tail;
31         while(l2 != NULL)
32         {
33             if(l1->val!=l2->val)
34                return false;
35             l1 = l1->next;
36             l2 = l2->next;
37         }
38 
39 
40         return true;
41 
42     }
43 };

 

Palindrome Linked List

标签:

原文地址:http://www.cnblogs.com/ZhangYushuang/p/4758764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!