class Stack: def __init__(self): self.stack = [] def push(self, item): self.stack.append(item) def pop(self): if not self.is_empty(): return self.stack.pop() def peek(self): if not self.is_empty(): return self.stack[-1] def is_empty(self): return len(self.stack) == 0 def size(self): return len(self.stack) # Zadanie dodatkowe def is_equal(self, other): if self.size() != other.size(): return False for i in range(self.size()): if self.stack[i] != other.stack[i]: return False return True stack = Stack() stack.push(1) stack.push(2) stack.push(3) print(stack.pop()) # 3 print(stack.peek()) # 2 print(stack.is_empty()) # False print(stack.size()) # 2 class Queue: def __init__(self): self.queue = [] def is_empty(self): return len(self.queue) == 0 def enqueue(self, item): self.queue.append(item) def dequeue(self): if not self.is_empty(): return self.queue.pop(0) def peek(self): if not self.is_empty(): return self.queue[0] queue = Queue() queue.enqueue(1) queue.enqueue(2) queue.enqueue(3) print(queue.dequeue()) # 1 print(queue.dequeue()) # 2 print(queue.is_empty()) # False print(queue.dequeue()) # 3 print(queue.is_empty()) # True def reverse_list(input_list): stack = Stack() reversed_list = [] for item in input_list: stack.push(item) while not stack.is_empty(): reversed_list.append(stack.pop()) return reversed_list def remove_duplicates(q): new_q = Queue() while not q.is_empty(): item = q.dequeue() if item not in new_q.queue: new_q.enqueue(item) return new_q def is_palindrome(string): stack = Stack() for char in string: stack.push(char) reversed_string = "" while not stack.is_empty(): reversed_string += stack.pop() return string == reversed_string