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__()
예제 #2
0
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
예제 #3
0
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
예제 #5
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]))
예제 #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 __init__(self):
     self.__link_list = LinkList()
예제 #8
0
 def __init__(self):
     self.__data_list = LinkList()
예제 #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)