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

234. Palindrome Linked List

时间:2018-05-24 16:36:51      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:ali   class   节点   val   node   stack   本质   []   efi   

判定链表是否为回文

方法一:借助一个栈,将链表节点值全部压入栈中,再弹出,依次比较。本质是把链表节点值逆置,然后与原链表节点值比较。全部相等则为回文。

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 static int wing=[]()
10 {
11     std::ios::sync_with_stdio(false);
12     cin.tie(NULL);
13     return 0;
14 }();
15 
16 class Solution 
17 {
18 public:
19     bool isPalindrome(ListNode* head) 
20     {
21         stack<int> istack;
22         ListNode *pr=head;
23         while(pr)
24         {
25             istack.push(pr->val);
26             pr=pr->next;
27         }         
28         while(head)
29         {
30             if(head->val!=istack.top())
31                 return false;
32             head=head->next;
33             istack.pop();
34         }
35         return true;
36     }
37 };

方法二:先计算链表长度,把前半部分链表逆置,然后比较新链和剩下那段链节点值是否依次相等。

234. Palindrome Linked List

标签:ali   class   节点   val   node   stack   本质   []   efi   

原文地址:https://www.cnblogs.com/zhuangbijingdeboke/p/9083074.html

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