Advertisement
wtmhahagd

link those lists

Sep 14th, 2016
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. class Node:
  2. def __init__(self, value):
  3. self._value = value
  4. self._prev = None
  5. self._next = None
  6.  
  7. def getValue(self):
  8. return self._value
  9.  
  10. class LinkedList:
  11. def __init__(self):
  12. self._header = Node(None)
  13. self._trailer = Node(None)
  14.  
  15. self._header.next = self._trailer
  16. self._trailer.next = self._header
  17.  
  18. self._size = 0
  19.  
  20. def __str__(self):
  21. if self._size == 0:
  22. return "empty linkedlist"
  23.  
  24. string = ""
  25. current = self._header._next
  26. while current is not self._trailer:
  27. string += str(current.getValue()) + " "
  28. current = current._next
  29.  
  30. return string
  31.  
  32. def add(self, value, index):
  33. # special case: outta bounds
  34. if index > self._size or index < 0:
  35. print("outta bounds :(")
  36. return
  37.  
  38. newNode = Node(value)
  39.  
  40. # special case: empty list
  41. if self._size == 0:
  42. self._insert(self._header, newNode, self._trailer)
  43. self._size += 1
  44. return
  45.  
  46. # general case
  47. before = self._header
  48. for i in range(index):
  49. before = before._next
  50. after = before._next
  51. self._insert(before, newNode, after)
  52. self._size += 1
  53. return
  54.  
  55. def _insert(self, before, thing, after):
  56. thing._prev = before
  57. thing._next = after
  58. before._next = thing
  59. after._prev = thing
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement