数据结构:带有结构特性的数据元素的集合。
常见的数据结构:集合,线性结构,树形结构,图形结构等。
线性结构:表中各个结点具有线性关系。
常见的线性结构:栈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)
根据栈的特性我们常有以下的应用。
如编程语言中的括号的匹配,十进制到二进制的转换等等。