数据结构基础
数据结构的定义是:计算机存储和组织数据的方式,称为数据结构。
这里涉及了两个要点:一是存储,二是组织。
计算机把单个变量按照大小存储在内存空间里,称为存储;不同的单个变量按照某种规则放在计算机内存的不同位置上,称为组织。
列表 (list) 是最常用的数据结构之一:
计算机把列比里的变量按照其大小存储在内存空间里,这是列表的存储方式;列表的每个元素的存储空间一定连续的、相邻的,这是列表的组织方式。
总的来说,对于一个数据结构,我们既要知道它存了什,又要知道它怎么存的。
Python中的列表虽然很灵活,但有些时候过分灵活也许不是件好事。为了让数据的存储和排布符合某些特定的规则,我们需要给列表加上某些限制。这种加上限制后的列表由于特性,操作的变化变为新的数据结构,我们重点介绍 栈 (stack) 和 队列 (queue)。
栈 (stack) 和 队列 (queue) 是两种基础的数据结构,其进出方式是 后进先出 LIFO(Last In First Out) 和 先进先出 FIFO (First In First Out) 。
栈
栈是一个栈不支持随即访问的列表,而是只能借助一个始终指向栈最上方的元素的指针来访问栈最上方的元素。新来的元素也只能添加到栈的最上方,同时要修改栈顶指针的指向。这就是 后进先出 的逻辑。
要想创建一个栈对象,我们需要定义一个栈类型:
class stack:
def __init__(self, size=100):
self.__datas = [0] * size
self.__size = size
self.__top = -1
"""占结构需要两个属性:一个储存信息的列表,一个指
向栈顶的top指针,以及一个用来分配空间的size参
数。这些属性显然应该是私有的。top 初值 -1 初
始栈空。"""
def isEmpty(self):
if self.__top == -1:
return True
return False
#判空方法
def top(self):
if self.isEmpty():
return "Stack is empty!"
return self.__datas[self.__top]
#访问栈顶方法
def push(self, data):
self.__top += 1
if self.__top >= self.__size:
self.