小言_互联网的博客

数据结构Python实现-栈

388人阅读  评论(0)

栈的介绍:

有些地方称为堆栈。可以存入、访问、删除元素,其只能允许在容器的一端进行加载数据和输出数据,任何时候访问和删除的数据都是最好存入的那个数据,默认了访问的顺序。其原理为后进先出。

栈的操作:

pop()弹出栈顶元素 peek()返回栈顶元素,只是得到其数值并不弹出来 stack()创建一个新的空栈
size()返回栈的元素个数 is_empty()判断是否为空 push(item)添加一个新的元素item到栈顶(压栈)

栈的结构实现:

既可以用顺序表实现也可以用链表实现。

用到的Python小知识点:

  1. 在逻辑值上“ ”,0 ,{ },(),【】都是假的

  2. python列表获取元素最后一个值的方法
    list1 = [1, 2, 3, 4, 5]
    获取list1的最后一个元素,注意第二种方法的使用
    print(list1[len(list1)-1])
    print(list1[-1])
    以此类推,可以获取倒数第二,第三…个元素的值
    print(list1[-2])
    print(list1[-3])
    print(list1[-4])
    print(list1[-5])

  3. Python方法
    append():在列表已经存在的情况下,需要在列表尾部新增元素。
    index():查找元素
    pop():从列表的尾部弹出并删除此元素。
    remove():可以指定删除元素,但是有多个相同的元素要删除时会删除最左边的元素。
    del():强大删除功能,可以删除列表的指定元素乃至整个列表。
    len():统计元组元素个数

  4. Python函数的基本定义
    函数定义的基本语法:

def 函数名([参数]):
函数体
[return 返回值]

python任何函数定义必须以关键字def开始,后空一格紧跟函数名。定义 的函数名不能和内置函数有冲突,名称本身要准确表达函数的功能,建议 用英文单词全称开头。参数可有可无,但小括号以及冒号是函数的基本格 式要求,不能省略。

Python语言编辑器中,除了默认的内置函数外,其他函数的调用,必须先通过import语句进行导入,才能使用。
5. Python类
把具有相同特性和行为的对象抽象为类,例如一个长方形盒子,由长宽高构成,盒子有不同的颜色、材质、类型等,这些长宽高颜色构成了一个盒子类的特性。
:数据(长宽高,颜色材质类型)-----属性定义
函数(体积计算,重量计算等等)---------方法定义
class关键字:所有的类定义必须用class开始,就像所有自定义函数都用def开始一样
类名:最好大写

class 类名(): --小括号+冒号

类文档说明:用三个单引号’’’ 成对说明内容,使用方法和函数文档说明一模一样。
类函数
保留函数__init__和self关键字:
(1)所有类需要实例化,必须先在类里声明__init__函数,不然类的实例无法使用。最简约格式如下def init(self)
(2)self关键字,在实例使用时,用于传递实例对象,必须在__init__定义并初始化,然后通过self传递
(3)实例通过点(.)可以调用属性、方法两个对象

栈的实现代码

class Stack(object):
    def __init__(self):
        self._list=[]
        
    def push(self,item):
        #添加新的元素到栈顶
        self._list.append(item)
     
    def pop(self):
        #弹出栈顶元素
        return self._list.pop()
       
        
    def peek(self):
        #返回栈顶元素
        if self._list:
           return self._list[-1]
       #返回列表的最后一个元素
        else:
           return None;
      
        
    def size(self):
        return len(self._list)
    
               
    def is_empty(self):
        return self._list==[]
     
if __name__ == '__main__':
       s=Stack()
       s.push(1);   
       s.push(2);  
       s.push(3); 
       s.push(4);
       print(s.pop())
       print(s.pop())
       print(s.pop()) 
       print(s.pop()) 
        

pop()弹出栈顶元素
peek()返回栈顶元素,只是得到其数值并不弹出来
stack()创建一个新的空栈
size()返回栈的元素个数
is_empty()判断是否为空
push(item)添加一个新的元素item到栈顶(压栈)

自己敲代码遇到的几个错误,总结:
1.IndentationError: expected an indented block空格即缩进有问题
2.AttributeError: ‘dict’ object has no attribute ‘append’ 其_list不是字典,是列表,只有列表才有append方法,把其字典改为列表
3.


转载:https://blog.csdn.net/qq_40660825/article/details/101426613
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场