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 3 - Stemming

Natural Language Processing So this one will be about stemming. Stemming is used in NLP for various reasons Stemming is removing certain parts of the word to get the meaning of it. For example, Running when stemmed returns run, and cooking when stemmed returns cook. from nltk.stem import PorterStemmer from nltk.tokenize import word_tokenize # testing with a sentence sent = "when we run we get healthy, Running is awesome. I have ran for may miles." myWords = word_tokenize(sent) for w in myWords: print (PorterStemmer() . stem(w)) print ( "**********Custom List************" ) # Testing with several custom words listwords = [ "come" , "came" , "coming" , "run" , "running" , "added" , "adding" ] for w in listwords: print (PorterStemmer() . stem(w)) The output will be as follows: