package com.data.struct;

public class NodeList {
private Node head;
public NodeList(){

}

public void print(){
Node node=head;
while(node!=null){
System.out.print(node.getData()+" ");
node=node.next;
}
System.out.println();
}
public Node search(int k){
Node x=head;
while(x!=null&&x.data!=k){
x=x.next;
}
return x;
}
public void insert(Node x){
x.next=head;
if(head!=null){
head.prev=x;
}
head=x;
x.prev=null;
}
public void delete(Node x){
if(x.prev!=null){
x.prev.next=x.next;
}else{
head=x.next;
}
if(x.next!=null){
x.next.prev=x.prev;
}
}
public static class Node{
private Node prev;
private Node next;
private int data;
public Node getPrev() {
return prev;
}
public void setPrev(Node prev) {
this.prev = prev;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}


}
public static void main(String[] args) {
NodeList list=new NodeList();
Node node=new Node();
node.setData(1);
list.insert(node);
Node node2=new Node();
node2.setData(3);
list.insert(node2);
Node node3=new Node();
node3.setData(5);
list.insert(node3);
list.print();
System.out.println(list.search(3).getNext().getData());
list.delete(list.search(3));
list.print();
}

}