class Stack: def __init__(self, items = []) : self.items = items def push(self, item) : if isinstance(item, int) : self.items = [item] + self.items else : raise TypeError def __str__(self) : return str(self.items) def pop(self) : if self.isEmpty() : raise IndexError else : self.items = self.items[1:] def isEmpty(self) : return (self.items == []) def top(self) : if self.isEmpty() : raise IndexError else : return self.items[0] s = Stack([3,4]) s.push(1) s class Queue2: def __init__(self, items = []) : self.items = items def push(self, item) : if isinstance(item, int) : self.items = [item] + self.items else : raise TypeError def __str__(self) : return str(self.items) def pop(self) : if self.isEmpty() : raise IndexError else : self.items = self.items[:-1] def isEmpty(self) : return (self.items == []) def top(self) : if self.isEmpty() : raise IndexError else : return self.items[-1] q = Queue2() q.push(8) q.push(10) ''' Trees! ''' class Node : def __init__ (self, cargo = None) : self.cargo = cargo self.left = None self.right = None def __str__ (self) : return str(self.cargo) def print_tree(tree) : if tree<>None : print_tree(tree.left) print tree.cargo print_tree(tree.right) ''' def head(l) : return l[0] def tail(l) : return l[1:] class Node : def __init__ (self, cargo = None, next = None) : self.cargo = cargo self.next = next def __str__ (self) : return str(self.cargo) def print_ll(linked_list) : print(linked_list) if linked_list.next <> None : print_ll(linked_list.next) node1 = Node("test") node2 = Node(3) node2.next = node1 node3 = Node([1,2,3], node2) node0 = Node("at the back") node1.next = node0 def nth_element(linked_list, num) : if num==0 : return linked_list else : return nth_element(linked_list.next, num-1) '''