Skip to main content

Creating a linked list

 I'm working my way through the mini courses on LeetCode to understand data structures and algorithms better. I am currently on linked lists. After a few slides, I was tasked with creating a linked list. I had no idea what to do and was stuck on this problem for days. I would look at it for a bit, not know what to do, and try to work on something else, and not be able to focus on that something else because I didn't know what to do about the linked list. Meh! It was a long 3-4 days. I finally figured it out and I have to say I feel very pleased with myseld :D 

Step 1: Define a node class and a linked list class. 

Each node has a value and a pointer to the next node. There is just a single pointer here because I chose to create a singly linked list. You can also have a pointer in the reverse direction point at the previous node. That would be a doubly linked list. I also had to define my actual linked list which held the value for the head node. 


Step 2: Create a get method to get the value at a particular "index". 

I say "index" because, of course, a linked list doesn't actually have an index. What was meant was to get the index-th node in the linked list. In the problem, we are told to return -1 if a node at that "index" doesn't exist. Otherwise, the value of the node is returned. I traversed the list until I reached the index-th node and returned it. 

get method in the class MyLinkedList




Step 3 : Create a method to add a node at the head

Add a head. I think this is pretty self explanatory. An edge case I had to keep in mind - empty linked lists.

addAtHead method in the class MyLinkedList

Step 4: Add a node to the tail of the list

The edge case on this was interesting. An empty list. Which meant, that really, I was just adding a head. So that's what I did. If the list was empty, I called the addAtHead method and let it do the work of adding the node.

addAtTail method in the class MyLinkedList

Step 5: Add a node at a particular index

This took up most of my time. And a large part of it was due to me misreading the requirements. I misinterpreted it and could not understand why they wanted me to do something so ridiculous and at odds with itself. I finally realised that the only ridiculous one was me. I really did want to kick myself. Once I figured out what they were asking me to do, it was fairly smooth sailing.

addAtIndex method in the class MyLinkedList





Step 6: Delete a node at a particular "index"

Again I had to traverse the list till I reached the node to be excised. This time though, I had to stop just before the index-th node so that I can point the node before the excision to the node after the excision.

deleteAtIndex method in the class MyLinkedList

All in all, I'm pretty pleased that I figured it out. Though I can't say I like my code. I'm going to spend some time to clean it up and improve it if I can.


Comments

Popular posts from this blog

Deviants in a normal world

It's definitely been a bit since I've seen this graphy. Anyone who has learnt about standard deviation knows this graph. Standard Deviation Standard deviation shows us how spread out all the values in a set are from the mean. The higher the standard deviation, the more spread out the values are over a wider range and the flatter this curve. In a normal distribution, most values are within 1 standard deviation from the mean(the green part of the graph). Apparently NumPy can calculate standard deviation too! import numpy numSet = [ *lots of numbers* ] numSetStdDev = numpy.std(numSet) Variance The variance also indicates how spread out the values in a set are. It measures the average degree to which each value differs from the mean. variance = standard deviation ^2 import numpy numSet = [ *lots of numbers * ] numSetVar = numpy.var(numSet) Source:  https://www.w3schools.com/python/python_ml_standard_deviation.asp

So long and thanks for all the fish! Part 1 of 2

I have been with the Tech Academy both as a software developer bootcamp student, as well as an employee. After my bootcamp, I was hired first as the live project instructor, and then as Live Project Director. This, I believe, gives me a unique point of view. I have absolutely no regrets and would join the bootcamp again. But there are a number of things I would do differently. What I have learnt as a former student 1. DO NOT WORK PART TIME.   I worked part-time(20-30hrs) during my bootcamp. I was up at 2.30-3.00am every day to work for several hours. I took a short nap, and then I took a 1hr bus ride down to campus. Studied for 7- 9 hours. Took a 1hr bus ride back home. Lather, rinse, repeat. I also had some family obligations. My weekends and half the summer were taken up caring for my young stepdaughter. I was completely exhausted by the end of the bootcamp and I didn't know if I could do more. Learning to program is HARD. You need to be fully focused. I am fortunate because I di...

Fizzbuzz

I was today years old when I found out what fizzbuzz was. Yes, I'm late to the party. I was in an interview where the interviewer mentioned that ordinarily they would ask interviewees in for a round of fizzbuzz challenges, as I know. Actually sir, no, I don't know 👀 But he sounded so certain that I must surely know what it is that I was afraid to say anything so I did what I always do when I panic. Look right back saying not a word. I googled this mysterious fizzbuzz problem:  It looks pretty easy. I don't think he meant this actual problem, but problems like this. Because this problem is way too easy to be an actual problem someone asks in an interview. I decided to work on it for fun:  Yup. Super easy. I wish this is all I were asked in an interview 😄