From 94db93ff42451d40ea33e9fe8d2c45f3eaf1b6b9 Mon Sep 17 00:00:00 2001 From: marina <138340846+bt3gl-cryptographer@users.noreply.github.com> Date: Wed, 2 Aug 2023 16:31:26 -0700 Subject: [PATCH] Create linked_list_II.py --- linked_lists/linked_list_II.py | 78 ++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 linked_lists/linked_list_II.py diff --git a/linked_lists/linked_list_II.py b/linked_lists/linked_list_II.py new file mode 100644 index 0000000..b801a83 --- /dev/null +++ b/linked_lists/linked_list_II.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# author: bt3gl + +class Node: + + def __init__(self, val): + + self.val = val + self.next = None + +class LinkedList: + + def __init__(self): + + self.head = Node(0) + self.len = 0 + + def _loop(self , index): + + node = self.head + p = 0 + while p < index + 1: + node = node.next + p += 1 + + return node + + def get(self, index: int) -> int: + if self.len <= index or index < 0: + return -1 + + node = self._loop(index) + + return node.val + + def addAtHead(self, val: int) -> None: + + self.addAtIndex(0, val) + + + def addAtTail(self, val: int) -> None: + + self.addAtIndex(self.len, val) + + + def addAtIndex(self, index: int, val: int) -> None: + + if self.len < index: + return -1 + + if index < 0: + index = 0 + + self.len += 1 + + node = self.head + for _ in range(index): + node = node.next + + new_node = Node(val) + new_node.next = node.next + node.next = new_node + + def deleteAtIndex(self, index: int) -> None: + + if self.len <= index or index < 0: + return -1 + + self.len -= 1 + + node = self.head + for _ in range(index): + node = node.next + + node.next = node.next.next + +