Quick actions

cmd+k|ctrl+k

Navigation

Languages

myLinkedList

Snippet info

Language

Python

Visibility

public

Author

arthurpc02

Created

2024-09-24T20:48:27.42711Z

Updated

2024-09-25T11:21:03.816916Z

class LinkedList():
    def __init__(self, value_first_item):
        self.head = {
            "value": value_first_item,
            "next": None,
        }
        self.length = 1
        self.tail = self.head
    
        
    def get_head(self):
        return self.head["value"]
    
        
    def get_tail(self):
        return self.tail["value"]
        
    
    def append(self, value):
        new_node = {
            "value": value,
            "next": None,
        }
        self.tail["next"] = new_node
        self.tail = new_node
        self.length+=1
    
    
    def prepend(self, value):
        new_node = {
            "value": value,
            "next": self.head,
        }
        self.head = new_node
        self.length+=1
    
    
    def get_position(self, position):
        """ get the value of a specific position in the linked list."""
        if position < 0:
            raise IndexError("No negative positions")
        
        if position > self.length:
            raise IndexError("Position out of boundaries")
        elif position == self.length:
            return self.get_tail()
        elif position == 0:
            return self.get_head()
        
        element = self.head["next"]
        curr_position = 1
        if element != None:
            if position == 1:
                return element["value"]
            else:
                while element["next"] != None:
                    element = element["next"]
                    curr_position+=1
                    if curr_position == position:
                        break
                return element["value"]


print("Hello World!")
myLinkedList = LinkedList(5)
print(myLinkedList.get_head())
print(myLinkedList.get_tail())
myLinkedList.append(10)
myLinkedList.append(15)
print(myLinkedList.get_head())
assert(myLinkedList.get_head() == 5)
print(myLinkedList.get_tail())
print(myLinkedList.get_position(1))
myLinkedList.append(20)
print(myLinkedList.get_position(3))
print(myLinkedList.get_position(4))
assert(myLinkedList.get_position(4) == 20)
myLinkedList.prepend(2)
assert(myLinkedList.get_head() == 2)
assert(myLinkedList.get_position(0) == 2)


print("Good-bye Cruel World")
INFO