小邋遢 MS.Jinlin 是个爱打扮的公主,他有很多晚礼服如"LALA" "NIHAOMA"、"WOBUHAO"、"NIHAOBUHAO"等众多衣服,可是由于衣服太多他要把它们装进箱子,但是作为公主,肯定是会突发奇想觉得哪件衣服好看,就把他拿了出来,当然那件衣服上面的衣服也被拿出来了,而且会弄乱了,小邋遢在经过几次的叠衣服和取衣服后,他想知道箱子里最上面的衣服是哪一件,如果箱子为空的话,就告诉她 Empty ,如果有多件一样的衣服,肯定是取走最上面的那一件啦。
输入:
第 1 行,输入N,代表共计进行了几次 *** 作
第 2 行至第 N+1 行,进行in out *** 作
in 为 放入衣服
out 为 取出衣服
格式:
in name1
out name2
现在有以下样例输入:
样例 1:
输入:
6
in AMDYES
in INTELNO
in USBAD
in CNYES
out INTELNO
in MDICN
输出:
MDICN
样例 2:
输入:
5
in AMDYES
in INTELNO
in USBAD
in CNYES
out AMDYES
输出:
Empty
思路:
第一步:
创建一个栈,以及一个栈的栈顶指针
顺序栈 栈 1
栈顶指针 指针 1
第二步:
我们要声明并定义入栈函数:
- 按照栈的定义使用栈顶指针模拟即可
- 需要传入一个参数来表示放什么数据
in(Name)
{
栈不满,Name 进入栈;
栈满,返回 False;
}
第三步:
我们声明并定义判空函数:
通过栈顶指针大小即可判断。
isEmpty()
{
1. 如果栈为空返回True
2. 不为空返回False
}
第四步:
我们要声明并定义出栈函数:
- 按照栈的定义使用栈顶指针模拟即可
- 返回一个数据表示出栈元素。
out()
{
如果栈为空则不能出栈,返回False;
不为空,则出栈。
}
第五步:
我们声明并定义取栈顶函数:
- 只需要将栈顶元素取出即可
- 先判断是否为空
string getTop()
{
如果栈为空则不能取栈顶,返回null;
不为空,则返回栈顶。
}
第六步:
主函数代码:
输入N
循环N次://
输入OP,输入name
根据执行OP执行in或out *** 作
判空,取栈顶输出答案
答案(python源码):
class myStack:
def __init__(self):
self.data=[]
#入栈
def push(self,element):
self.data.append(element)
#判空
def is_empty(self):
return self.data==[]
#出栈
def pop(self):
if self.data==[]:
return
return self.data.pop()
#取栈顶元素
def top(self):
if self.data==[]:
return
return self.data[-1]
if __name__=='__main__':
N=int(input())
stack=myStack()
for i in range(N):
op=input().split()
if op[0]=="in":
stack.push(op[1])
else:
while stack.top()!=op[1]:
stack.pop()
stack.pop()
if stack.is_empty():
print("Empty")
else:
print(stack.top())
声明:文章部分内容,参考或者引用蓝桥云课上的文章。链接如下:
蓝桥杯省赛 14 天夺奖冲刺营 - 数据结构基础之链表篇 - 蓝桥云课 (lanqiao.cn)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)