Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node(object):
- def __init__(self, obj=None):
- self.obj = obj
- self.nxt = None
- def __str__(self):
- return str(self.obj)
- class SingleLinkedList(object):
- def __init__(self):
- self.head = None
- self.tail = None
- def append(self, obj):
- new_obj = Node(obj)
- if self.is_empty():
- self.head = new_obj
- self.tail = new_obj
- else:
- self.tail.nxt = new_obj
- self.tail = new_obj
- # удаляет все элементы, содержащие указанное значение
- def remove_all(self, value):
- found = False
- prev = None
- cur = self.head
- while cur is not None:
- if cur.obj == value:
- found = True
- if prev is None:
- if self.tail == self.head:
- self.head = None
- self.tail = None
- cur = None
- else:
- cur = cur.nxt
- self.head = cur
- elif cur.nxt is None:
- self.tail = prev
- prev.nxt = None
- cur = None
- else:
- prev.nxt = cur.nxt
- cur = cur.nxt
- else:
- prev = cur
- cur = cur.nxt
- if not found:
- raise ValueError('value is not in list')
- def __str__(self):
- if not self.is_empty():
- cur = self.head
- out = f'LinkedList[{cur}'
- while cur.nxt is not None:
- cur = cur.nxt
- out += ', ' + str(cur)
- return out + ']'
- else:
- return 'LinkedList[]'
- def is_empty(self):
- return self.head is None
- def __len__(self):
- l=0
- cur=self.head
- while cur is not None:
- l+=1
- cur=cur.nxt
- return l
- def insert(self,index,value):
- i=0
- prev=None
- cur=self.head
- if self.append(self,value):
- self.append(self,value)
- else:
- while i!=index:
- prev=cur
- cur=cur.nxt
- i+=1
- prev.nxt=value
- cur.nxt=cur
- cur=value
- def __contains__(self, value):
- found = False
- prev = None
- cur = self.head
- while cur is not None:
- if cur.obj == value:
- found = True
- else:
- prev.nxt = cur.nxt
- cur = cur.nxt
- return found
- class Stack:
- def __init__(self):
- self.top = 0
- self.head = Node()
- def is_empty(self):
- return self.top == 0
- def push(self, item):
- oldHead = self.head
- self.head = Node()
- self.head.item = item
- self.head.link = oldHead
- self.top += 1
- def pop(self):
- item = self.head.item
- self.head = self.head.link
- self.top -= 1
- return item
- def topp(self):
- return self.head.item
- def size(self):
- return self.top
- stack=Stack()
- stack.push(10)
- stack.push(20)
- stack.push(30)
- print(stack.topp())
- print(stack.size())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement