链表的回文结构

请编写一个函数,检查链表是否为回文。

给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。

测试样例:
{1,2,3,2,1}

返回:true

{1,2,3,2,3}

返回:false
思路:用栈将链表中的值依次倒入,然后从栈顶到栈底依次放出,然后一个个匹配

代码如下:
package lianbiao;

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

public class panduanhuiwen {
	static class ListNode {
		int val = 0;
		ListNode next = null;

		ListNode(int val) {
			this.val = val;
		}
	}

	public static Stack<Integer> stack = new Stack<Integer>();
    public static List<Integer> list = new ArrayList<Integer>();
	public static void main(String[] args) {
            ListNode l1 =new ListNode(1);
            ListNode l2 =new ListNode(2);
            ListNode l3 =new ListNode(3);
            ListNode l4 =new ListNode(2);
            ListNode l5 =new ListNode(1);
            l1.next = l2;
            l2.next = l3;
            l3.next = l4;
            l4.next = l5;
            boolean  TF =panduanhuiwen.isPalindrome(l1);
	        System.out.println(TF);
	}

	public static boolean isPalindrome(ListNode pHead) {
          if(pHead == null ) return false;
          while(pHead != null){
        	  stack.push(pHead.val);
        	  list.add(pHead.val);
        	  pHead = pHead.next;
          }
          for(int i=0;i<list.size();i++){
        	   if(stack.pop() !=list.get(i)){
        		   return false;
        	   }
          }
          return true;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值