From 79fc85b28d1269cf62b311c8c3eecc9c5798af94 Mon Sep 17 00:00:00 2001 From: marina <138340846+bt3gl-cryptographer@users.noreply.github.com> Date: Wed, 2 Aug 2023 18:34:17 -0700 Subject: [PATCH] Create doubly_linked_list_II.py --- linked_lists/doubly_linked_list_II.py | 74 +++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 linked_lists/doubly_linked_list_II.py diff --git a/linked_lists/doubly_linked_list_II.py b/linked_lists/doubly_linked_list_II.py new file mode 100644 index 0000000..b5e6142 --- /dev/null +++ b/linked_lists/doubly_linked_list_II.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# author: bt3gl + + +class Node: + + def __init__(self, val): + self.val = val + self.next = None + self.prev = None + +class MyLinkedList: + + 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 + new_node.prev = node + 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.prev = node + node.next = node.next.next + + + +