数据结构与算法之——栈、队列-python代码实现

数据结构之——栈、队列-python代码实现

1、栈

1.1 原理

太简单,略

1.2 python实现栈

"""python 列表实现栈"""


class Stack(object):
    def __init__(self):
        self.stack_list = []

    """入栈 压入栈底 即把新的元素加到列表尾部"""
    def push(self, item):
        self.stack_list.append(item)

    """出栈 后进先出 即把列表的最后一个元素移除 -1在python一般用于索引最后一位"""
    def pop(self):
        if self.is_empty_stock():
            print("栈为空,无法再进行出栈操作!")
            raise "栈为空,无法再进行出栈操作!"
        else:
            _temp_top_value = self.stack_list.pop()
            return _temp_top_value

    """获取栈顶的元素"""
    def get_top(self):
        if self.is_empty_stock():
            print("栈为空,无法获取栈顶元素!")
            raise "栈为空,无法获取栈顶元素!"
        else:
            return self.stack_list[-1]

    """判断栈是否空,即判断列表是不是空列表"""
    def is_empty_stock(self):
        return self.stack_list == []

    """栈的元素个数 即列表的长度"""
    def size(self):
        return len(self.stack_list)


if __name__ == "__main__":
    stock1 = Stack()
    print("——————初始情况——————")
    print(f"判断空栈:{stock1.is_empty_stock()}")
    print(f"栈的元素数量:{stock1.size()}")
    # print(f"当前栈顶元素:{stock1.peek()}")
    print(f"当前栈的总情况:{stock1.stack_list}")

    # 入栈
    print("——————入栈——————")
    stock1.push(1)
    print(f"当前栈的总情况:{stock1.stack_list}")
    stock1.push(0)
    print(f"当前栈的总情况:{stock1.stack_list}")
    stock1.push(0)
    print(f"当前栈的总情况:{stock1.stack_list}")
    stock1.push(8)
    print(f"当前栈的总情况:{stock1.stack_list}")
    stock1.push(6)
    print(f"当前栈的总情况:{stock1.stack_list}")
    print(f"判断空栈:{stock1.is_empty_stock()}")
    print(f"栈的元素数量:{stock1.size()}")
    print(f"当前栈顶元素:{stock1.get_top()}")

    # 出栈
    print("——————出栈——————")
    stock1.pop()
    print(f"当前栈的总情况:{stock1.stack_list}")
    stock1.pop()
    print(f"当前栈的总情况:{stock1.stack_list}")
    stock1.pop()
    print(f"当前栈的总情况:{stock1.stack_list}")
    stock1.pop()
    print(f"当前栈的总情况:{stock1.stack_list}")
    stock1.pop()
    print(f"当前栈的总情况:{stock1.stack_list}")
    # stock1.pop()
    # print(f"当前栈的总情况:{stock1.stack_list}")


image

2、队列

2.1 原理

太简单,略

2.2 python实现队列

"""python 列表实现队列"""


class Queue(object):
    def __init__(self):
        self.queue_list = []

    """入队  即把新的元素加到列表尾部"""
    def enqueue(self, item):
        self.queue_list.append(item)

    """出队 先进先出 即把列表的第一个元素移除"""
    def dequeue(self):
        if self.is_empty_queue():
            print("队列为空,无法再进行出队操作!")
            raise "队列为空,无法再进行出队操作!"
        else:
            _temp_head_value = self.queue_list.pop(0)
            return _temp_head_value

    """读取队头元素"""
    def get_head(self):
        if self.is_empty_queue():
            print("队列为空,无法获取队头元素!")
            raise "队列为空,无法获取队头元素!"
        else:
            return self.queue_list[0]

    """判断队列是否空,即判断列表是不是空列表"""
    def is_empty_queue(self):
        return self.queue_list == []

    """队列的元素个数 即列表的长度"""
    def size(self):
        return len(self.queue_list)


if __name__ == "__main__":
    queue = Queue()
    print("——————初始情况——————")
    print(f"判断空队列:{queue.is_empty_queue()}")
    print(f"队列的元素数量:{queue.size()}")
    print(f"当前队列的总情况:{queue.queue_list}")

    # 入队
    print("——————入队——————")
    queue.enqueue(1)
    print(f"当前队列的总情况:{queue.queue_list}")
    queue.enqueue(0)
    print(f"当前队列的总情况:{queue.queue_list}")
    queue.enqueue(0)
    print(f"当前队列的总情况:{queue.queue_list}")
    queue.enqueue(8)
    print(f"当前队列的总情况:{queue.queue_list}")
    queue.enqueue(6)
    print(f"当前队列的总情况:{queue.queue_list}")
    print(f"判断空队列:{queue.is_empty_queue()}")
    print(f"队列的元素数量:{queue.size()}")

    # 出队
    print("——————出队——————")
    queue.dequeue()
    print(f"当前队列的总情况:{queue.queue_list}")
    queue.dequeue()
    print(f"当前队列的总情况:{queue.queue_list}")
    queue.dequeue()
    print(f"当前队列的总情况:{queue.queue_list}")
    queue.dequeue()
    print(f"当前队列的总情况:{queue.queue_list}")
    queue.dequeue()
    print(f"当前队列的总情况:{queue.queue_list}")


image

posted @ 2022-06-19 21:36  JaxonYe  阅读(189)  评论(0编辑  收藏  举报