示例#1
0
 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()
示例#2
0
 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
示例#3
0
# -*- 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]))
示例#4
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)
示例#5
0
 def push_right(self, item):
     self.__link_list.append(Node(item))
示例#6
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)
示例#7
0
 def push_left(self, item):
     self.__link_list.push(Node(item))
 def add(self, item):
     node = Node(item)
     self.__data_list.append(node)
示例#9
0
#!/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))