zoukankan      html  css  js  c++  java
  • 基本数据结构

    1.线性数据结构

    线性数据结构可以想象成一个管或者桶一样的结构,元素的位置是相对确定的,取决于添加

    或者删除的顺序。

    2.栈

    首先什么是栈?

    栈相当于一个顶端开头的五面体容器或者圆筒。具体如下图所示:

    上图很清楚的表示了栈的结构与栈添加和删除元素的顺序。栈的操作都是在顶端完成的,顶端入栈和顶端出栈,这就造成了一个现象,也就是所谓的先进后出。可以看成是行军队列,正常情况是向前进军。如果需要返回,则最快的方法是后队变前队,开头也就变成了末尾。

    看一下栈所支持的操作:

    1.push操作,将元素添加到栈顶端

    2.pop操作,即元素的删除操作

    3.peek操作,查看操作,由于栈的一切操作都在顶端,也只能查看顶端元素

    4.isEmpty操作,判断栈是否为空

    5.size操作,返回栈元素的个数

    下面来用python实现栈。

    由于栈这个数据结构不是python内置的,那就需要我们去定义它。先来想想python中哪种容器结构适合用来创建栈。列表,字典,元组,集合。如果熟悉这几种数据类型的话肯定是list最适合,首先它符合顺序结构的要求,又有丰富的操作可以满足栈的操作。下面将使用list来构建一个栈:

    
    
    class Stack:
    '''
    使用列表来创建栈
    思路:使列表的添加与删除符合栈的一端操作即可。将列表末端做为栈顶端进行操作
    '''
    def __init__(self):
    #这里将栈定义为空列表
    self.items = []
    def push(self,item):
    return self.items.append(item)
    def pop(self):
    return self.items.pop()
    def peek(self):
    return self.items[-1]
    def isEmpty(self):
    return self.items == []
    def size(self):
    return len(self.items)
    
    

    展示栈的使用效果:

    s_test = Stack()
    s_test.push(1)
    s_test.push(2)
    print(s_test.peek())
    print(s_test.pop())
    print(s_test.isEmpty())
    print(s_test.size())
    
    输出:
    2
    2
    False
    1

    python调用栈

    安装第三方库

    pip install pythonds
    from pythonds.basic import Stack
    s_test = Stack()
  • 相关阅读:
    js template实现方法
    linux su和sudo命令的区别
    使用u盘安装os x系统
    单个APP页面支持屏幕旋转
    iOS 抓取 HTML ,CSS XPath 解析数据
    Oslo 相机 App
    App 开发步骤
    iOS 自动布局框架 – Masonry 详解
    细聊 Cocoapods 与 Xcode 工程配置
    2017网页设计趋势
  • 原文地址:https://www.cnblogs.com/peiziming/p/13237662.html
Copyright © 2011-2022 走看看