class Stack(object): def __init__(self): self.__list = LinkList() def push(self, item): self.__list.push(Node(item)) def pop(self): return self.__list.pop().item_value def peek(self): # add exercise 1.3.7 return self.__list[0].item_value def is_empty(self): return len(self.__list) == 0 def size(self): return len(self.__list) def __iter__(self): self.__data_list.__iter__() return self def __next__(self): return self.__data_list.__next__()
class Deque(object): def __init__(self): self.__link_list = LinkList() def is_empty(self): return len(self.__link_list) == 0 def size(self): return len(self.__link_list) def push_left(self, item): self.__link_list.push(Node(item)) def push_right(self, item): self.__link_list.append(Node(item)) def pop_left(self): return self.__link_list.pop().item_value def pop_right(self): result = self.__link_list[self.size() - 1] self.__link_list.remove(self.size() - 1) return result.item_value
class BagUseLinkList(object): def __init__(self): self.__data_list = LinkList() def add(self, item): node = Node(item) self.__data_list.append(node) def is_empty(self): return self.__data_list.is_empty() def __len__(self): return len(self.__data_list) def __iter__(self): self.__data_list.__iter__() return self def __next__(self): return self.__data_list.__next__()
class QueueUseLink(object): def __init__(self): self.__list = LinkList() def enqueue(self, item): self.__list.append(Node(item)) def dequeue(self): return self.__list.pop().item_value def is_empty(self): return len(self.__list) == 0 def size(self): return len(self.__list) def __iter__(self): self.__list.__iter__() return self def __next__(self): return self.__list.__next__().item_value
# -*- 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 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 __init__(self): self.__link_list = LinkList()
def __init__(self): self.__data_list = LinkList()
#!/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)