Thursday, 15 August 2019

Check linkedList palindrom


 Steps:
1. break list in 2 parts
2. reverse second list
3. compare list

void checkLinkedListpalindrom(Node node) {
        Node p = node;
        Node q = node;
        Node start = node;
        Node secondstart=null;
        while(true) {
            p = p.next.next;
            if(p==null) {
                secondstart = q.next;
                q.next = null;
                break;
            }
            if(p.next==null) {
                secondstart = q.next.next;
                q.next = null;
                break;
            }
           
            q = q.next;
       
        }
        secondstart =  reverse(secondstart);
        System.out.println(compareList(start, secondstart));
       
    }
   
    boolean compareList(Node n1, Node n2) {
        boolean flag = true;
        while(null!=n1 || null!=n2) {
            if(n1.value==n2.value) {
                n1 = n1.next;
                n2 = n2.next;
            }else {
                flag = false;
                break;
            }
        }
        return flag;
    }
   
    Node reverse(Node node) {
        Node pre = null;
        Node current =node;
        while(null!=current) {
            Node temp = current.next;
            current.next = pre;
            pre = current;
            current = temp;
           
        }
        return pre;
    }


links for Data Structure

  1) 𝐁𝐞𝐜𝐨𝐦𝐞 𝐌𝐚𝐬𝐭𝐞𝐫 𝐢𝐧 𝐋𝐢𝐧𝐤𝐞𝐝 𝐋𝐢𝐬𝐭:  https://lnkd.in/gXQux4zj 2) 𝐀𝐥𝐥 𝐭𝐲𝐩𝐞𝐬 𝐨𝐟 𝐓𝐫𝐞𝐞 𝐓𝐫𝐚𝐯𝐞𝐫𝐬𝐚𝐥𝐬...