4 Commits e641a40ee2 ... 9f32f9f19d

Author SHA1 Message Date
  Farooq Karimi Zadeh 9f32f9f19d implement index 1 year ago
  Farooq Karimi Zadeh 184cec30e4 implement prepend 1 year ago
  Farooq Karimi Zadeh e621271d90 implement methods 1 year ago
  Farooq Karimi Zadeh d134167af0 add figure 1 year ago
2 changed files with 27 additions and 5 deletions
  1. 4 0
      README.md
  2. 23 5
      linkedlist.py

+ 4 - 0
README.md

@@ -2,6 +2,10 @@
 
 Simple implementation of Linked List in Python
 
+```
+Head[value] -> Node[value] -> Node[Value] -> None
+```
+
 ## API
 
  - `__setitem__`: Assign a value to the linked list

+ 23 - 5
linkedlist.py

@@ -21,21 +21,38 @@ class LinkedList:
             raise ListIsEmpty()
         i = 0
         ptr = self.__head
-        while i <= n:
+        while i < n:
             if ptr.next_ is None:
                 raise IndexError()
             i += 1
             ptr = ptr.next_
         return ptr.value
 
-    def __setitem__(self, a, b):
-        ...
+    def __setitem__(self, n: int, value: Any):
+        ptr = self.__head
+        for i in range(n):
+            ptr = ptr.next_
+            print(f"At {i}")
+        ptr.value = value
 
     def index(self, value: Any) -> int:
-        ...
+        ptr = self.__head
+        i = 0
+        while True:
+            if ptr.value == value:
+                return i
+            else:
+                i += 1
+                ptr = ptr.next_
+            if ptr is None:
+                break
+        raise ValueError()
 
     def append(self, value: Any):
         ptr = self.__head
+        if ptr is None:
+            self.__head = Node(value=value, next_=None)
+            return
         while True:
             if ptr.next_ is None:
                 break
@@ -43,4 +60,5 @@ class LinkedList:
         ptr.next_ = Node(value, next_=None)
 
     def prepend(self, value: Any):
-        ...
+        new_node = Node(value=value, next_=self.__head)
+        self.__head = new_node