class LinkedList(object): class _StackNode(object): def __init__(self, item=None, link=None): self.item = item self.link = link def get_item(self): return self.item def get_next(self): return self.link def set_next(self, new_next): self.link = new_next def __init__(self, head=None): self.head = head def insert(self, item): new_node = Node(item) new_node.set_next(self.head) self.head = new_node def __len__(self): current = self.head count = 0 while current: count += 1 current = current.get_next() return count def peek(self): current_node = self.head while current_node is not None: print current_node.item, \" -> \", current_node = current_node.next print None def pop(self, node_value): current_node = self.head previous_node = None while current_node is not None: if current_node.item == node_value: # if this is the first node (head) if previous_node is not None: previous_node.next = current_node.next else: self.head = current_node.next previous_node = current_node current_node = current_node.next def push(self, item): node = Node(item, None) if self.head is None: self.head = self.tail = node else: self.tail.next = node self.tail = node Solution class LinkedList(object): class _StackNode(object): def __init__(self, item=None, link=None): self.item = item self.link = link def get_item(self): return self.item def get_next(self): return self.link def set_next(self, new_next): self.link = new_next def __init__(self, head=None): self.head = head def insert(self, item): new_node = Node(item) new_node.set_next(self.head) self.head = new_node def __len__(self): current = self.head count = 0 while current: count += 1 current = current.get_next() return count def peek(self): current_node = self.head while current_node is not None: print current_node.item, \" -> \", current_node = current_node.next print None def pop(self, node_value): current_node = self.head previous_node = None while current_node is not None: if current_node.item == node_value: # if this is the first node (head) if previous_node is not None: previous_node.next = current_node.next else: self.head = current_node.next previous_node = current_node current_node = current_node.next def push(self, item): node = Node(item, None) if self.head is None: self.head = self.tail = node else: self.tail.next = node self.tail = node.