回文就是从左往右和从又往左都是一样的数。
方法1:
将每一个节点都入栈,然后再从链表的头部开始和栈中的元素进行比对,弹出一个比对一次,如果每次比对都相等,就说明是回文的。
	public static Boolean isReverse(SingleLinkList list) {
		Node temp = list.head.next;
		Stack<Node> stack = new Stack();
		while(temp!=null) {
			stack.add(temp);
			temp = temp.next;
		}
		temp = list.head.next;
		while(temp!=null) {
			
			if(temp.no!=stack.pop().no) {
				return false;
			}
			temp = temp.next;
			
		}
		return true;
		
		
	}方法2:将后半段的链表放入到栈中,然后得到链表的中间节点,将中间节点之后的节点放到栈中,然后将链表前半部分和栈中元素进行比对,如果都相同的话就是回文的。
那么首先得找到中间节点。使用快慢指针,快指针一次走两步,慢指针一次走一步,当快指针到达链表尾部的时候,慢指针就到达了中间,但是这个中间得看情况,链表节点是奇数和偶数这个中点是不一样的。
如果是奇数个节点,那么就刚刚好走到中间,
如果是偶数个节点,走到中间的左边位置。
public static int findMid(SingleLinkList list) {
		Node f = list.head.next;
		Node s = list.head.next;
		int mid = 1;
		while(true) {
			if(f.next==null||f.next.next==null) {
				break;
			}
			f = f.next.next;
			s = s.next;
			mid ++;
		}
		
		return mid;
	}然后将中点之后的所有节点存到栈中。再一个一个拿出来比对,如果全部相同那么就是回文。
	public static  boolean isReverse(SingleLinkList list) {
		int mid = findMid(list);
		Node temp = list.head.next;
		Stack<Node> s = new Stack<Node>();
		for(int i=1;i<mid;i++) {
			temp = temp.next;
		}
		while(temp!=null) {
			
			s.add(temp);
			temp = temp.next;
			
		}
		temp = list.head.next;
		while(!s.isEmpty()) {
			if(temp.no != s.pop().no) {
				return false;
			}
			temp = temp.next;
		}
		
		
		return true;
	}









