Skip to main content

Quickly with the Linked List Implementation

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.


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.


Popular posts from this blog

Natural Language Processing with Python NLTK part 5 - Chunking and Chinking

Natural Language Processing Using regular expression modifiers we can chunk out the PoS tagged words from the earlier example. The chunking is done with regular expressions defining a chunk rule. The Chinking defines what we need to exclude from the selection. Here are list of modifiers for Python: {1,3} = for digits, u expect 1-3 counts of digits, or "places" + = match 1 or more ? = match 0 or 1 repetitions. * = match 0 or MORE repetitions $ = matches at the end of string ^ = matches start of a string | = matches either/or. Example x|y = will match either x or y [] = range, or "variance" {x} = expect to see this amount of the preceding code. {x,y} = expect to see this x-y amounts of the preceding code source: https://pythonprogramming.net/regular-expressions-regex-tutorial-python-3/ Chunking import nltk from nltk.tokenize import word_tokenize # POS tagging sent = "This will be chunked. This is for Test. World is awesome. Hello world....

Natural Language Processing with Python NLTK part 1 - Tokenizer

Natural Language Processing Starting with the NLP articles first we will try the  tokenizer  in the NLTK package. Tokenizer breaks a paragraph into the relevant sub strings or sentences based on the tokenizer you used. In this I will use the Sent tokenizer, word_tokenizer and TweetTokenizer which has its specific work to do. import nltk from nltk.tokenize import sent_tokenize, word_tokenize, TweetTokenizer para = "Hello there this is the blog about NLP. In this blog I have made some posts. " \ "I can come up with new content." tweet = "#Fun night. :) Feeling crazy #TGIF" # tokenizing the paragraph into sentences and words sent = sent_tokenize(para) word = word_tokenize(para) # printing the output print ( "this paragraph has " + str(len(sent)) + " sentences and " + str(len(word)) + " words" ) # print each sentence k = 1 for i in sent: print ( "sentence ...

Natural Language Processing with Python NLTK part 4 - PoS tagging

Natural Language Processing  PoS tagging or Part of Speech tagging is a commonly used mechanism. This will allow NLTK to tag the words that is in your corpus and give the tags accordingly. There are many tags predefined by the NLTK and here are the list. Number Tag Description 1. CC Coordinating conjunction 2. CD Cardinal number 3. DT Determiner 4. EX Existential  there 5. FW Foreign word 6. IN Preposition or subordinating conjunction 7. JJ Adjective 8. JJR Adjective, comparative 9. JJS Adjective, superlative 10. LS List item marker 11. MD Modal 12. NN Noun, singular or mass 13. NNS Noun, plural 14. NNP Proper noun, singular 15. NNPS Proper noun, plural 16. PDT Predeterminer 17. POS Possessive ending 18. PRP Personal pronoun 19. PRP$ Possessive pronoun 20. RB Adverb 21. RBR Adverb, comparative 22. RBS ...