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

线性结构_练习:检查链表是否回文

时间:2021-03-17 15:02:32      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ring   ima   slow   load   soa   偶数   ack   情况   奇数   

实现类:

public class LinkedList {

    /*
     * 回文链表
     * 检查链表是否回文
     */
    public static void main(String[] args) {
        Linknode node = new Linknode(1);
        node.next = new Linknode(2);
        node.next.next = new Linknode(3);
        node.next.next.next = new Linknode(3);
        node.next .next.next.next= new Linknode(2);
        node.next .next.next.next.next= new Linknode(1);
        LinkedList list = new LinkedList();
        Boolean bo = list.isPalindrome(node);
        System.out.println(bo);

    }
    public boolean isPalindrome(Linknode pHead) {
        if (pHead==null) 
            return false;
        if(pHead.next==null)
            return true;
        Linknode slower = pHead;
        Linknode faster = pHead;
        Stack<Linknode> stack  = new Stack<>();
        boolean isOadd = true;
        while(faster != null && faster.next!=null) {
            stack.push(slower);//入栈
            slower = slower.next;
            faster = faster.next.next;
            if (faster==null) 
                isOadd = false; //A B C C B A

        }
        //当链表是奇数的时候
        if (isOadd) //此处仍然是true,slower就往后移一位 A B C B A
            slower = slower.next;
        while(!stack.empty()) {//出栈
            if (stack.pop().data!=slower.data) {
                return false;
            }else {
                slower = slower.next;
            }
        }
        return true;
        
    }
    
    


}

链表属性类:

public class Linknode {
    int data;
    Linknode next;
    
    public Linknode(int data) {
        this.data = data;
    }
}

分析奇数,偶数的情况:

技术图片

技术图片

 

线性结构_练习:检查链表是否回文

标签:ring   ima   slow   load   soa   偶数   ack   情况   奇数   

原文地址:https://www.cnblogs.com/159357zzx/p/14546717.html

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