实现一个栈
题目描述:
1.使用数组
实现一个栈的数据结构,要求具有以下方法:
- 压栈:在栈顶插入元素
- 弹栈:弹出栈顶元素
- 获取栈顶元素
- 判断栈是否为空
- 获取栈中元素个数
2.栈操作
- 新建一个栈(命名为s1)
- 将数组ls_1 按索引从小到大进行压栈
- 输出栈中元素个数
- 获取栈顶元素,保存在变量s1_gettop中,观察栈中元素个数
- 弹出栈顶元素,保存在变量s1_poptop中,观察栈中元素个数
提示
1. 栈 (stack)
简介
- 一种常用的数据结构
- 后进先出(LIFO-last in first out):最后插入的元素最先出来
注:
- 获取栈顶元素并未对栈本身作出改变
- 弹出栈顶元素是在获取栈顶元素的基础上,再进行出栈操作,改变了栈。可借助列表中的
pop
方法
2. 题目解析
class MyStack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
def get_top(self):
if not self.is_empty():
return self.items[self.size() - 1]
else:
return None
def my_pop(self):
if not self.is_empty():
return self.items.pop()
else:
print("栈已为空!")
return None
def my_push(self,item):
self.items.append(item)
ls_1 = list(range(1,10,2))
ls_1
[1, 3, 5, 7, 9]
新建栈s1
s1 = MyStack()
s1
<__main__.MyStack at 0x6f27d08>
将数组ls_1 按索引从小到大进行压栈
for i in ls_1:
s1.my_push(i)
输出栈中元素个数
print(s1.size())
5
获取栈顶元素,保存在变量s1_gettop中,打印栈中元素个数
s1_gettop = s1.get_top()
print('栈顶元素为:{}'.format(s1_gettop))
print('栈中元素个数为:{}'.format(s1.size()))
栈顶元素为:9
栈中元素个数为:5
弹出栈顶元素,保存在变量s1_poptop中,打印栈中元素个数
s1_poptop = s1.my_pop()
print('栈顶元素为:{}'.format(s1_poptop))
print('栈中元素个数为:{}'.format(s1.size()))
栈顶元素为:9
栈中元素个数为:4
class Student(object):
def __init__(self,name,score):
self.name = name
self.score = score
def get_grade(self):
if self.score >= 90:
return 'A'
elif self.score >= 60:
return 'B'
else:
return 'C'
lisa = Student('Lisa',99)
bart = Student('Bart',59)
print(lisa.name,lisa.get_grade())
print(bart.name,bart.get_grade())
Lisa A
Bart C