package org.wesome.dsalgo;
import lombok.Data;
import java.util.Objects;
public class LinkedList {
static Node head;
static int size = 0;
static void addInLast(int element) {
System.out.println("\nLinkedList.addInLast " + element);
Node newNode = new Node(element);
if (Objects.isNull(head)) {
head = newNode;
return;
}
Node tempNode = head;
while (Objects.nonNull(tempNode.next)) {
tempNode = tempNode.next;
}
tempNode.next = newNode;
size++;
}
static void deleteNode(int position) {
System.out.println("\nLinkedList.deleteNode");
// If linked list is empty
if (Objects.isNull(head)) {
return;
}
Node temp = head;
if (position == 0) {
//if position is 0 , ie head node needs to remove then make next node as head
head = temp.next;
return;
}
// Find previous node of the node to be deleted
for (int i = 0; temp != null && i < position - 2; i++) {
temp = temp.next;
}
// If position is more than number of nodes
if (temp == null || temp.next == null) return;
Node next = temp.next.next;
temp.next = next;
size--;
}
//this method print the list using loop
static void printIteratively() {
System.out.println("\nLinkedList.printIteratively");
if (Objects.isNull(head)) {
System.out.println("Linked List is null = " + head);
return;
}
Node tempNode = head;
System.out.println("Linked List Size is " + size);
while (Objects.nonNull(tempNode)) {
System.out.println("Node = " + tempNode.data);
tempNode = tempNode.next;
}
}
}
@Data
class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
}
}