Linked List + Check Palindrome
Thu Dec 15 2022 10:56:01 GMT+0000 (Coordinated Universal Time)
Saved by @Beluga #java #linkedlist
import java.util.*; public class LinkedList { public static class Node{ int data; Node next; public Node (int data) { this.data = data; this.next = null; } } public static Node head; public static Node tail; public static int size; public void addFirst(int data){ Node newNode=new Node(data); size++; if(head==null){ head=tail=newNode; return; } newNode.next=head; head=newNode; } public void addLast(int data){ Node newNode= new Node(data); tail.next=newNode; newNode.next=null; tail=newNode; } public void add(int idx, int data){ if(idx==0){ addFirst(data); } else{ Node newNode=new Node(data); size++; Node temp=head; int i=0; while(i<idx-1){ temp=temp.next; i++; } newNode.next=temp.next; temp.next=newNode; } } public void printLL(LinkedList ll){ Node temp=ll.head; while(temp!=null){ System.out.print(temp.data + "->"); temp=temp.next; } System.out.println("null"); } public Node findMid(Node head){ Node slow=head; Node fast=head; while(fast!=null && fast.next!=null){ slow=slow.next; fast=fast.next.next; } return slow; } public boolean checkPalindrome(){ if(head==null || head.next==null) return true; Node midNode=findMid(head); Node prev=null; Node curr=midNode; Node next; while(curr!=null){ next=curr.next; curr.next=prev; prev=curr; curr=next; } Node right=prev; Node left=head; while(right!=null){ if(left.data!=right.data) return false; left = left.next; right=right.next; } return true; } public static void main(String[] args){ LinkedList ll = new LinkedList(); ll.addFirst(1); ll.addLast(2); ll.addLast(3); ll.addLast(1); ll.add(3,2); //ll.printLL(ll); System.out.println(ll.checkPalindrome()); } }
Comments