线性结构Linear Structure

❖线性结构是一种有序数据项的集合,其中 每个数据项都有唯一的前驱和后继

  除了第一个没有前驱,最后一个没有后继 新的数据项加入到数据集中时,只会加入到原有 某个数据项之前或之后 具有这种性质的数据集,就称为线性结构

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

 ❖线性结构总有两端,在不同的情况下,两 端的称呼也不同

  有时候称为“左”“右”端、“前”“后”端、 “顶”“底”端

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

 ❖两端的称呼并不是关键,不同线性结构的 关键区别在于数据项增减的方式

   有的结构只允许数据项从一端添加,而有的结构 则允许数据项从两端移除

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

 ❖4个最简单但功能强大的结构:栈Stack,队列Queue,双端队列Deque 和列表List

  这些数据集的共同点在于,数据项之间只存在先 后的次序关系,都是线性结构

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

 ❖这些线性结构是应用最广泛的数据结构 ,它们出现在各种算法中,用来解决大量重 要问题

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

 

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]、、、

 什么是栈Stack

1.栈

❖一种有次序的数据项集合,在栈中,数据 项的加入和移除都仅发生在同一端

  这一端叫栈“顶top”,另一端叫栈“底base”

❖日常生活中有很多栈的应用

  盘子、托盘、书堆等等

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

 

❖距离栈底越近的数据项,留在栈中的时间 就越长

  而最新加入栈的数据项会被最先移除

❖这种次序通常称为“后进先出LIFO”: Last in First out

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

 

2.栈的特性:反转次序

❖我们观察一个由混合的python原生数据 对象形成的栈

  进栈和出栈的次序正好相反

 

 学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

 ❖这种访问次序反转的特性,我们在某些计 算机操作上碰到过

  浏览器的“后退back”按钮,最先back的是最 近访问的网页 Word的“Undo”按钮,最先撤销的是最近操作

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

 

 3.抽象数据类型Stack

❖抽象数据类型“栈”是一个有次序的数据 集,每个数据项仅从“栈顶”一端加入到 数据集中、从数据集中移除,栈具有后进 先出LIFO的特性

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

 ❖抽象数据类型“栈”定义为如下的操作

Stack():创建一个空栈,不包含任何数据项

push(item):将item加入栈顶,无返回值

pop():将栈顶数据项移除,并返回,栈被修改

peek():“窥视”栈顶数据项,返回栈顶的数 据项但不移除,栈不被修改

isEmpty():返回栈是否为空栈

size():返回栈中有多少个数据项

学习笔记:[算法分析]数据结构与算法Python版[基本的数据结构-上]

class Stack:
    def __init__(self):
        self.items=[]
        
    def isEmpty(self):
        return self.items==[]
    def push(self,item):
        self.items.append(item)
    def pop(self):
        return self.items.pop()
    def peek(self):
        return self.items[len(self.items)-1]
    def size(self):
        return len(self.items)
    

s=Stack()

print(s.isEmpty())
s.push(4)
s.push('DOG')
print(s.peek())
s.push(True)
print(s.size())
print(s.isEmpty())
s.push(8.4)
print(s.pop())
print(s.pop())
print(s.size())
View Code

相关文章:

  • 2021-03-26
  • 2021-12-25
  • 2021-07-11
  • 2021-04-20
  • 2021-12-15
  • 2022-12-23
  • 2021-08-05
  • 2021-06-10
猜你喜欢
  • 2021-09-04
  • 2021-11-18
  • 2021-08-09
  • 2021-11-30
  • 2021-10-26
  • 2022-12-23
  • 2021-11-06
相关资源
相似解决方案