文章目录
栈
栈的类型定义
栈的基本操作
Push(&S,e)
- 初始条件:栈S已存在
- 操作结果:插入元素e为新的栈顶元素。
Pop(&S,&e)
- 初始条件:栈已存在且非空
- 操作结果:删除S的栈顶元素,并用e返回其值。
数组实现栈
class MyStack(object):
"""模拟栈"""
def __init__(self):
self.items = []
def is_empty(self):
"""判断是否为空"""
return self.items == []
def size(self):
"""返回栈的大小"""
return len(self.items)
def push(self, item):
"""压栈(加入元素)"""
self.items.append(item)
def pop(self):
"""弹栈(弹出元素)"""
if len(self.items)>0:
return self.items.pop()
else:
print("栈已经为空")
return None
def top(self):
"""返回栈顶元素"""
if not self.is_empty():
return self.items[len(self.items) - 1]
else:
return None
s = MyStack()
s.push(4)
print("栈顶元素为:"+str(s.top()))
print("栈大小为:"+str(s.size()))
s.pop()
print("弹栈成功")
s.pop()
"""
栈顶元素为:4
栈大小为:1
弹栈成功
栈已经为空
用链表实现栈
如图,压栈操作就是将新元素放到链表的首部,见第二个数据域的(1)、(2)操作,而弹栈只需要删除链表的第一个元素就可以了,具体操作见(3)。然后我们可以写出代码:
class LNode(object):
def __init__(self,x):