Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node:
- def __init__(self, value):
- self._value = value
- self._prev = None
- self._next = None
- def getValue(self):
- return self._value
- class LinkedList:
- def __init__(self):
- self._header = Node(None)
- self._trailer = Node(None)
- self._header.next = self._trailer
- self._trailer.next = self._header
- self._size = 0
- def __str__(self):
- if self._size == 0:
- return "empty linkedlist"
- string = ""
- current = self._header._next
- while current is not self._trailer:
- string += str(current.getValue()) + " "
- current = current._next
- return string
- def add(self, value, index):
- # special case: outta bounds
- if index > self._size or index < 0:
- print("outta bounds :(")
- return
- newNode = Node(value)
- # special case: empty list
- if self._size == 0:
- self._insert(self._header, newNode, self._trailer)
- self._size += 1
- return
- # general case
- before = self._header
- for i in range(index):
- before = before._next
- after = before._next
- self._insert(before, newNode, after)
- self._size += 1
- return
- def _insert(self, before, thing, after):
- thing._prev = before
- thing._next = after
- before._next = thing
- after._prev = thing
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement