# 基于链表实现的栈类
class LNode:
def __init__(self, data, next_=None):
self.data = data
self.next = next_
class LStack:
def __init__(self):
self._top = None
def is_empty(self):
return self._top is None
def push(self, elem): # 链表的头插法
'''
入栈
:param elem:
:return:
'''
self._top = LNode(elem, self._top)
def pop(self):
'''
出栈
:return:
'''
if self._top == None:
print('栈为空')
return
self._top = self._top.next
return self._top.data
def top(self):
'''
返回栈顶元素值,不删除元素
:return:
'''
if self._top == None:
print('栈为空')
return
return self._top.data
if __name__ == "__main__":
test = LStack()
print(test.is_empty())
test.push(1)
print (test.top())
print(test.is_empty())
test.push(2)
print(test.top())
test.pop()
print(test.top())