So previous post described about the Linked List thought of doing the implementation.
The implementation is done using Java.
As you can see below it contains two classes. The first class is used to create a node. A one single node in the linked list. Then through tjat implementation we join the next node with the earlier created node.
The implementation is done using Java.
As you can see below it contains two classes. The first class is used to create a node. A one single node in the linked list. Then through tjat implementation we join the next node with the earlier created node.
1 2 3 4 5 6 7 8 9 10 11 | public class nodeClass { public int info; //contains the information part (Data) public nodeClass next; // The next node public nodeClass(int i){ //constructor to assign this(i,null); } public nodeClass(int x, nodeClass n){// assign values to info and next node info = x; next = n; } } |
Next on the initiating the Linked List and adding functionalists.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | package linkedlist; public class Llist { protected nodeClass head,tail; //head =>; the first element //tail =>; the last element public Llist(){ head = tail = null;//single node } public boolean isEmpty(){ return head == null; //check if the head is null if so no nodes } //FUnctions //Insert at head public void InsertAtHead(int y){ head = new nodeClass(y,head); if(tail == null){ tail = head; //if this was the first element added then head = tail } } //Insert at Tail public void InsertAtTail(int y){ if(!isEmpty()){ tail.next = new nodeClass(y); // if there is already elements the do this //step 1: create a new node for the new tail element //Step 2: update the tail for the new tail element tail = tail.next; }else{ head = tail = new nodeClass(y); } } //delere for head (This will delete the value and return the deleted value) public int DeleteFromHead(){ //step 1 : take the value to an variable //step 2 : update the head value to its successor //step 3 : display the value taken int k = head.info; if (head == tail){ head = tail = null;//if there was only one node }else{ head = head.next; } return k; // This thing just got deleted } // Final thing for today Delete from tail(Tricky) public int DeleteFromTail(){ //like earlier delete and display the deleted one //Step 1 : check if only one node then easy delete that thing //Step 2 : Find the predecessor (Through a loop) //step 3 : Delete tail //Step 4 : Make the predecessor the next tail int k = tail.info; if(head == tail){ head = tail = null; }else{ nodeClass temp;// temp node to hold the predecessor for(temp = head; temp.next !=tail ; temp = temp.next); tail = temp; // predecessor is assigned tail.next = null; //bye bye old tail } return k;// This just got deleted } public static void main(String[] args) { Llist list = new Llist(); list.InsertAtHead(70); list.InsertAtTail(100); list.InsertAtHead(56); list.InsertAtHead(175); System.out.println("Head :" + list.head.info); System.out.println("Tail :" + list.tail.info); list.DeleteFromHead(); list.DeleteFromTail(); System.out.println("*****After Delete********"); System.out.println("Nead head : "+ list.head.info); System.out.println("Nead tail : "+ list.tail.info); } } |
So finally one thing to remember. Nothing is deleted from JVM. you just remove the connection to it by making it null. That's how you delete it.