def put(self, item, timeout=None): if self.__con.acquire(): while self.is_full(): if not self.__con.wait(timeout): raise TimeoutError self.__data.enqueue(Node(item)) self.__con.notify() self.__con.release()
def add(self, item): new_node = Node(item) if self.__head is None: self.__head = new_node self.__tail = new_node else: current = self.__head previous = None while current is not None: if item > current.item_value: previous = current current = current.next_node else: break if previous is None: new_node.next_node = current self.__head = new_node else: previous.next_node = new_node new_node.next_node = current self.__length += 1
# -*- coding: utf-8 -*- # @Time : 2018/7/27 22:34 # @Author : leo cheng # @Email : [email protected] # @File : exercise_1.3.27.py # @Software: PyCharm from Chapter1_Fundamentals.bagqueuestack.link_list import LinkList, Node def max(first_node): result = 0 while first_node.next_node is not None: if first_node.item_value > result: result = first_node.item_value first_node = first_node.next_node return result if __name__ == '__main__': link_list = LinkList() link_list.append(Node(1)) link_list.append(Node(2)) link_list.append(Node(7)) link_list.append(Node(3)) link_list.append(Node(5)) link_list.append(Node(11)) link_list.append(Node(1)) link_list.append(Node(3)) link_list.append(Node(6)) print(max(link_list[0]))
def __next__(self): if self.__iter_node is None: raise StopIteration elif self.__iter_node != self.__last_node: result = self.__iter_node self.__iter_node = self.__iter_node.next_node else: result = self.__iter_node self.__iter_node = None return result def __len__(self): return self.__length if __name__ == '__main__': circle_list = CircleList() circle_list.enqueue(Node(1)) circle_list.enqueue(Node(2)) circle_list.enqueue(Node(3)) circle_list.enqueue(Node(4)) print(circle_list.dequeue().item_value) print(circle_list.dequeue().item_value) print(circle_list.dequeue().item_value) print(circle_list.dequeue().item_value) for item_node in circle_list: print(item_node.item_value) for item_node in circle_list: print(item_node.item_value)
def push_right(self, item): self.__link_list.append(Node(item))
def reverse(first_node): reverse_node = None while first_node is not None: second_node = first_node.next_node first_node.next_node = reverse_node reverse_node = first_node first_node = second_node return reverse_node def reverse_use_recursion(first_node): if first_node is None or first_node.next_node is None: return first_node second_node = first_node.next_node reverse_node = reverse_use_recursion(second_node) second_node.next_node = first_node first_node.next_node = None return reverse_node if __name__ == '__main__': link_list = LinkList() link_list.append(Node(1)) link_list.append(Node(2)) link_list.append(Node(3)) link_list.append(Node(4)) reverse = reverse_use_recursion(link_list[0]) print(reverse)
def push_left(self, item): self.__link_list.push(Node(item))
def add(self, item): node = Node(item) self.__data_list.append(node)
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/7/26 23:08 # @Author : leo cheng # @Email : [email protected] # @File : exercise_1.3.26.py # @Software: PyCharm from Chapter1_Fundamentals.bagqueuestack.link_list import LinkList, Node def remove(link_list, key): temp_node = link_list[0] for node in link_list: if node.item_value == key: temp_node.next_node = node.next_node else: temp_node = node if __name__ == '__main__': search_list = LinkList() search_list.append(Node(1)) search_list.append(Node(2)) search_list.append(Node(2)) search_list.append(Node(3)) search_list.append(Node(2)) search_list.append(Node(4)) remove(search_list, 2)
def push(self, item): self.__list.push(Node(item))
def enqueue(self, item): self.__list.append(Node(item))