package double_linked_list; public class doublelinkedlist { Node awal; Node ahir; public doublelinkedlist(){ awal=null; ahir=null; } public boolean periksa_isEmpty(){ return(awal==null) ; } public void insert_dari_Awal(int data){ Node node= new Node(data); if(periksa_isEmpty()){ ahir=node; }else{ awal.prev=node; } node.next=awal; awal=node; } public void insert_dari_ahir(int data){ Node node= new Node(data); if(periksa_isEmpty()){ awal=node; }else{ ahir.next=node; node.prev=ahir; } ahir= node; } public Node hapus_data_awal(){ Node temp =awal; if(awal.next == null) ahir=null; else awal.next.prev=null; awal=awal.next; return temp; } public Node hapus_data_ahir(){ Node temp= ahir; if(awal.next==null) awal=null; else ahir.prev.next=null; ahir =ahir.prev; return temp; } public boolean inser_data_tengah(int key, int data){ Node current= awal; while(current.data != key){ current =current.next; if(current==null) return false; } Node node =new Node(data); if(current==ahir){ node.next=null; ahir=node; }else{ node.next=current.next; current.next.prev=node; } node.prev= current; current.next=node; return true; } public Node hapus_key(int key){ Node current =awal; while(current.data != key){ current=current.next; if(current==null) return null; } if (current==awal) awal =current.next; else current.prev.next=current.next; if(current==ahir) ahir=current.next.prev; else current.next.prev=current.prev; return current; } public void tampil_awal_ahir(){ System.out.print("Data (awal-->ahir):"); Node current=awal; while(current != null){ current.tampil(); current=current.next; } System.out.println(""); } public void tampil_ahir_awal(){ System.out.print("Data (ahir-->awal):"); Node current=ahir; while(current != null){ current.tampil(); current=current.prev; } System.out.println(""); } }