【顺序表和链表】【栈和队列】

先进后出
顺序表实现栈(在尾部插入和弹出,时间复杂度为O(1))

class stack(object):
    def __init__(self):
        self.__List = []

    def push(self, item):
        return self.__List.append(item)

    def pop(self):
        return self.__List.pop()

    def size(self):
        return len(self.__List)

    def isempty(self):
        return self.__List == []


if __name__ == "__main__":
    s = stack()

    s.push(1)
    s.push(2)
    s.push(3)
    s.push(4)
    print(s.size())
    print(s.isempty())
    # b = size(s)
    # print(b)
    for i in range(4):
        print(s.pop())
    print(s.isempty())

单链表实现栈(在头部插入和弹出,时间复杂度为O(1))

队列

普通队列
一端插入另一端弹出
顺序表实现

class queene(object):
    def __init__(self):
        self.__List = []

    def push(self, item):
        return self.__List.append(item)

    def pop(self):
        return self.__List.pop(0)

    def size(self):
        return len(self.__List)

    def isempty(self):
        return self.__List == []


if __name__ == "__main__":
    s1 = queene()
    s1.push(1)
    s1.push(2)
    s1.push(3)
    s1.push(4)
    print(s1.size())
    print(s1.isempty())
    # b = size(s)
    # print(b)
    for i in range(4):
        print(s1.pop())
    print(s1.isempty())

双端队列
相当于两个栈的栈底合并

class doublequeene(object):
    def __init__(self):
        self.__List = []

    def add_rear(self, item):
        return self.__List.insert(0,item)

    def add_front(self, item):
        return self.__List.append(item)
    def out_rear(self):
        return self.__List.pop(-1)

    def out_front(self):
        return self.__List.pop()

    def size(self):
        return len(self.__List)

    def isempty(self):
        return self.__List == []

class node(object):
    def __init__(self, ele):
        self.element = ele
        self.left = None
        self.right = None


class tree(object):
    def __init__(self):
        self.root = None

    def add(self, item):
        elm = node(item)
        if self.root is None:
            self.root = elm
            return
        queene = [self.root]
        while queene:
            cur_node = queene.pop(0)
            if cur_node.left is None:
                cur_node.left = elm
                return
            else:
                queene.append(cur_node.left)
            if cur_node.right is None:
                cur_node.right = elm
                return
            else:
                queene.append(cur_node.right)

    def travel(self):
        if self.root is None:
            return
        queene = [self.root]
        while queene:
            cur_node = queene.pop(0)
            print(cur_node.element)
            if cur_node.left is not None:
                queene.append(cur_node.left)
            if cur_node.right is not None:
                queene.append(cur_node.right)

    def front_travel(self, node):
        if node is None:
            return
        print(node.element)
        self.front_travel(node.left)
        self.front_travel(node.right)

    def middle_travel(self, node):
        if node is None:
            return
        self.middle_travel(node.left)
        print(node.element)
        self.middle_travel(node.right)

    def rear_travel(self, node):
        if node is None:
            return
        self.rear_travel(node.left)
        self.rear_travel(node.right)
        print(node.element)


if __name__ == "__main__":
    s2 = tree()
    s2.add(1)
    s2.add(2)
    s2.add(3)
    s2.add(4)
    s2.travel()
    s2.front_travel(s2.root)
    s2.middle_travel(s2.root)
    s2.rear_travel(s2.root)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值