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();
  }
}