'''==========数组实现栈=============== '''
class MyStack():
#模拟栈
def __init__(self):
self.items = []
#判断栈是否为空
def isEmpty(self):
return len(self.items)==0
#返回栈的大小
def size(self):
return len(self.items)
#返回栈顶元素
def top(self):
if not self.isEmpty():
return self.items[len(self.items)-1]
else:
return None
#弹栈
def pop(self):
if len(self.items)>0:
return self.items.pop()
else:
print("栈已经为空")
return None
#压栈
def push(self,item):
self.items.append(item)
if __name__ =="__main__":
s = MyStack()
s.push(4)
print("栈顶元素:"+str(s.top()))
print("栈大小为:"+str(s.size()))
print("弹栈成功:" + str(s.pop()))
print(s.isEmpty())
'''==========链表实现栈==============='''
class Node():
def __new__(self,x):
self.data =x
self.next =None
class MyStack():
def __init__(self):
#pHead头结点
self.data = None
self.next = None
#判断stack是否为空,如果为空返回true,否则返回false
def empty(self):
if self.next == None:
return True
else:
return False
#获取栈中元素的个数
def size(self):
size =0
p =self.next
while p!=None:
p = p.next
size+=1
return size
#入栈:把e放在栈顶
def push(self,e):
p =Node()
p.data=e
p.next=self.next
self.next = p
#出栈:同时返回栈顶元素
def pop(self):
tmp = self.next
if tmp !=None:
self.next = tmp.next
return tmp.data
print("栈已经为空")
return None
def top(self):
if self.next !=None:
return self.next.data
print("栈已经为空")
return None
if __name__ =="__main__":
s = MyStack()
s.push(4)
print("栈顶元素:"+str(s.top()))
print("栈大小为:"+str(s.size()))
print("弹栈成功:" + str(s.pop()))
print(s.empty())
用数组、链表实现栈
猜你喜欢
转载自blog.csdn.net/liuli1926634636/article/details/89452231
今日推荐
周排行