python中的堆栈使用列表或者函数来实现
栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。
由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 。。
4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放。
5、程序代码区—存放函数体的二进制代码。
不懂可以参考一下连接
栈结构实现
栈可以用顺序表实现,也可以用链表实现。
栈的操作
Stack() 创建一个新的空栈
push(item) 添加一个新的元素item到栈顶
pop() 弹出栈顶元素
peek() 返回栈顶元素
is_empty() 判断栈是否为空
size() 返回栈的元素个数
1 class Stack(object): 2 """栈""" 3 def __init__(self): 4 self.items = [] 5 6 def is_empty(self): 7 """判断是否为空""" 8 return self.items == [] 9 10 def push(self, item): 11 """加入元素""" 12 self.items.append(item) 13 14 def pop(self): 15 """弹出元素""" 16 return self.items.pop() 17 18 def peek(self): 19 """返回栈顶元素""" 20 return self.items[len(self.items)-1] 21 22 def size(self): 23 """返回栈的大小""" 24 return len(self.items) 25 if __name__ == "__main__": 26 stack = Stack() 27 stack.push("hello") 28 stack.push("world") 29 stack.push("itcast") 30 print stack.size() 31 print stack.peek() 32 print stack.pop() 33 print stack.pop() 34 print stack.pop()
利用python中列表的方法实现数据结构中堆栈的“后进先出”的性质
列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。
用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如:
>>> stack = [1, 2, 3] >>> stack.append(4) >>> stack.append(5) >>> stack [1, 2, 3, 4, 5] >>> stack.pop() 5 >>> stack [1, 2, 3, 4] >>> stack.pop() 4 >>> stack.pop() 3 >>> stack [1, 2]

浙公网安备 33010602011771号