python-数据结构-栈的基本实现

线性数据结构

        一旦一个数据项被添加,它相对于前后元素一直保持该位置的不变 

        线性数据结构有两端,有时被称为左右,某些情况被称为前后,你也可以称为顶部和底部

        接下来我们研究栈、队列、deques、列表

1.0什么是栈

栈(后进先出)是一个项的集合,添加移除新项总发生在同一端,这一端通常称为 顶部,与顶部相对应的端称为底部

栈的底部很重要,因为在栈中靠近底部的项是存储时间最长的。最近添加的项是最先会被移除的。这种排序原则有时被称为 LIFO,后进先出。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。

举个例子:。几乎所有的自助餐厅都有一堆托盘或盘子,你从顶部拿一个,就会有一个新的托盘给下一个客人。想象桌上有一堆书, 只有顶部的那本书封面可见,要看到其他书的封面,只有先移除他们上面的书。


我们新建一个栈包含了很多Python对象


Python 数据对象创建和删除的过程,注意观察他们的顺序。


        栈的抽象数据类型由以下结构和操作定义。如上所述,栈被构造为项的有序集合,其中项被添加和从末端移除的位置称为“顶部”。栈是有序的 LIFO 。栈操作如下。

  1. Stack() 创建一个空的新栈。 它不需要参数,并返回一个空栈。
  2. push(item)将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。
  3. pop() 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。
  4. peek() 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。
  5. isEmpty() 测试栈是否为空。不需要参数,并返回布尔值。
  6. size() 返回栈中的 item 数量。不需要参数,并返回一个整数。
我们通过python语言来实现:

我们定义一个stack_definiton.py文件

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

    def isEmpty(self):
        return self.items == []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        self.items.pop()

    def peek(self):
        return self.items[len(self.items) - 1]

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

    def list1(self):
        return self.items
 
 

再定义一个python_example.py 对上述定义的方法进行测试

from python_basic_stack.stack_definition import Stack

# 定义一个对象
s = Stack()

# 判断栈是否为空
print("栈是否为空:", s.isEmpty())

# 4入栈
s.push(4)

# dog入栈
s.push("dog")

# 输出当前栈的成员
print(s.list1())

# 输出栈顶
print(s.peek())

# 8.入栈
s.push(8.4)

# 输出当前栈的成员
print(s.list1())

# 栈顶第一个元素出栈
s.pop()

# 输出当前栈的成员
print(s.list1())

# 输出栈顶
print(s.peek())

# 栈顶第一个元素出栈
s.pop()

# 输出当前栈的成员
print(s.list1())

# 输出栈顶
print(s.peek())

# 栈顶元素出栈
s.pop()

# 输出当前栈的成员
print(s.list1())

# 栈是否为空
print(s.isEmpty())

猜你喜欢

转载自blog.csdn.net/qq_29286967/article/details/80980593