Python 数据结构 之 栈 的顺序、链式存储结构
栈的链式存储结构
Python 仿照C 语言实现 栈的链式、顺序存储结构
文章转载请注明: Python 数据结构 之 栈 的顺序、链式存储结构
代码地址:
https://github.com/WenkeZhou/PythonDataStructure/tree/master/struct/Stack
栈的顺序存储结构:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'MrHero'
class SqStack(object):
"""
栈的线性结构
"""
def __init__(self, size):
self.data = list(None for _ in range(size))
self.max_size = size
self.top = -1
def get_length(self):
# 返回栈的长度
return self.top + 1
def push(self, elem):
# 进栈
if self.top + 1 == self.max_size:
raise IndexError("Stack is full")
else:
self.top += 1
self.data[self.top] = elem
def pop(self):
# 出栈
if self.top == -1:
raise IndexError("Stack is empty")
else:
self.top -= 1
return self.data[self.top + 1]
def get_top(self):
# 取栈顶元素
if self.top == -1:
raise IndexError("Stack is empty")
else:
return self.data[self.top]
def show_stack(self):
# 从栈顶向下开始显示栈里面的元素
j = self.top
while j >= 0:
print self.data[j]
j -= 1
def is_empty_stack(self):
return self.top == -1
if __name__ == '__main__':
sqs = SqStack(5)
sqs.push(1)
sqs.push(2)
sqs.push(3)
sqs.show_stack()
栈的链式存储结构
# !/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'MrHero'
class Node(object):
# 节点
def __init__(self, data=None):
self.data = data
self.next = None
class LKStack(object):
def __init__(self):
self.top = Node(None)
self.count = 0
def get_length(self):
return self.count
def get_top(self):
# 返回栈顶元素
return self.top.data
def is_empty(self):
return self.count == 0
def push(self, elem):
# 进栈
tmp = Node(elem)
if self.is_empty():
self.top = tmp
else:
tmp.next = self.top
self.top = tmp
self.count += 1
def pop(self):
# 出栈
if self.is_empty():
raise IndexError("Stack is empty!")
else:
self.count -= 1
elem = self.top.data
self.top = self.top.next
return elem
def show_stack(self):
# 从栈顶开始显示各节点值
if self.is_empty():
raise IndexError("Stack is empty!")
else:
j = self.count
tmp = self.top
while j > 0 and tmp:
print tmp.data
tmp = tmp.next
j -= 1
if __name__ == '__main__':
lks = LKStack()
for i in range(1, 5):
lks.push(i)
lks.show_stack()
lks.pop()
lks.show_stack()
文章转载请注明: Python 数据结构 之 栈 的顺序、链式存储结构