• python线性数据结构之栈的实现


    数据结构:带有结构特性的数据元素的集合。

    常见的数据结构:集合,线性结构,树形结构,图形结构等。

    线性结构:表中各个结点具有线性关系。

    常见的线性结构:栈Stack、队列Queue、双端队列Deque和列表List

    栈Stack:一次有序的数据项集合,在栈中,数据项的加入和移除都仅发生在同一端。这一端叫栈“顶top”,另一端叫栈“低base”。

    距离栈低越近的数据项,留在栈中的时间就越长。  而最新加入栈的数据项会被最先被移除。

    即“后进先出LIFO”:Last in First out

    这是一种基于数据项保存时间的次序,时间越短的离栈顶越近,而时间越长的离栈低越近。

    栈的特性:反转次序

    用python实现自定义用户数据类型 ADT Stack,可以引用python原生的线性结构类型列表来实现。

    代码如下:

    #!/usr/bin/env python
    # -*-coding:utf-8 -*-
    
    
    """使用python原生线性数据结构列表来实现用户自定义数据类型栈Stack,即ADT Stack"""
    class Stack:
        def __init__(self):
            # 栈的定义
            self.items = []
    
        def isEmpty(self):
            # 判断栈是否为空
            return self.items == []
    
        def push(self, item):
            # 栈的添加
            return self.items.append(item)
    
        def peek(self):
            # 查看栈顶的数据
            return self.items[(len(self.items)-1)]
    
        def pop(self):
            # 栈数据的移出
            return self.items.pop()
    
        def size(self):
            # 栈的长度
            return len(self.items)      

    根据栈的特性我们常有以下的应用。

    如编程语言中的括号的匹配,十进制到二进制的转换等等。

    当你试图去用自己的言语去讲清一些事物时,你会明白对此事物的理解是融会贯通还是一知半解
  • 相关阅读:
    Terminologies in MVC: Part 2 (Razor Engine Syntax vs Web Form)
    what is diff. b/w app state & session state
    ASP.NET Web Pages (Razor) FAQ
    _AppStart.cshtml 和 _PageStart.cshtml的妙用
    系统编程--信号
    系统编程--进程间通信
    系统编程--进程
    系统编程--标准IO
    系统编程--文件IO
    网络--路由表&IP选路
  • 原文地址:https://www.cnblogs.com/1211-1010/p/12833376.html
Copyright © 2020-2023  润新知