Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. class Node(object):
  2. def __init__(self, obj=None):
  3. self.obj = obj
  4. self.nxt = None
  5.  
  6. def __str__(self):
  7. return str(self.obj)
  8.  
  9.  
  10. class SingleLinkedList(object):
  11. def __init__(self):
  12. self.head = None
  13. self.tail = None
  14.  
  15. def append(self, obj):
  16. new_obj = Node(obj)
  17. if self.is_empty():
  18. self.head = new_obj
  19. self.tail = new_obj
  20. else:
  21. self.tail.nxt = new_obj
  22. self.tail = new_obj
  23.  
  24. # удаляет все элементы, содержащие указанное значение
  25. def remove_all(self, value):
  26. found = False
  27. prev = None
  28. cur = self.head
  29. while cur is not None:
  30. if cur.obj == value:
  31. found = True
  32. if prev is None:
  33. if self.tail == self.head:
  34. self.head = None
  35. self.tail = None
  36. cur = None
  37. else:
  38. cur = cur.nxt
  39. self.head = cur
  40. elif cur.nxt is None:
  41. self.tail = prev
  42. prev.nxt = None
  43. cur = None
  44. else:
  45. prev.nxt = cur.nxt
  46. cur = cur.nxt
  47. else:
  48. prev = cur
  49. cur = cur.nxt
  50. if not found:
  51. raise ValueError('value is not in list')
  52.  
  53. def __str__(self):
  54. if not self.is_empty():
  55. cur = self.head
  56. out = f'LinkedList[{cur}'
  57. while cur.nxt is not None:
  58. cur = cur.nxt
  59. out += ', ' + str(cur)
  60. return out + ']'
  61. else:
  62. return 'LinkedList[]'
  63.  
  64. def is_empty(self):
  65. return self.head is None
  66.  
  67. def __len__(self):
  68. l=0
  69. cur=self.head
  70. while cur is not None:
  71. l+=1
  72. cur=cur.nxt
  73. return l
  74. def insert(self,index,value):
  75. i=0
  76. prev=None
  77. cur=self.head
  78. if self.append(self,value):
  79. self.append(self,value)
  80. else:
  81. while i!=index:
  82. prev=cur
  83. cur=cur.nxt
  84. i+=1
  85. prev.nxt=value
  86. cur.nxt=cur
  87. cur=value
  88. def __contains__(self, value):
  89. found = False
  90. prev = None
  91. cur = self.head
  92. while cur is not None:
  93. if cur.obj == value:
  94. found = True
  95. else:
  96. prev.nxt = cur.nxt
  97. cur = cur.nxt
  98. return found
  99.  
  100. class Stack:
  101. def __init__(self):
  102. self.top = 0
  103. self.head = Node()
  104.  
  105. def is_empty(self):
  106. return self.top == 0
  107.  
  108. def push(self, item):
  109. oldHead = self.head
  110. self.head = Node()
  111. self.head.item = item
  112. self.head.link = oldHead
  113. self.top += 1
  114.  
  115. def pop(self):
  116.  
  117. item = self.head.item
  118. self.head = self.head.link
  119. self.top -= 1
  120. return item
  121.  
  122. def topp(self):
  123. return self.head.item
  124.  
  125. def size(self):
  126. return self.top
  127.  
  128. stack=Stack()
  129. stack.push(10)
  130. stack.push(20)
  131. stack.push(30)
  132. print(stack.topp())
  133. print(stack.size())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement