📅  最后修改于: 2023-12-03 15:28:42.471000             🧑  作者: Mango
本题为GATE-CS-2005第80题。本题要求考生实现一个简单的栈数据结构,并对其进行一系列操作。
在这道题中,您需要实现以下栈操作:
实现一个函数push,接受一个整数作为参数,将其压入栈中。栈基于链表实现。
def push(self, data):
"""
将给定的数据压入栈中
"""
new_node = Node(data)
new_node.next_node = self.top
self.top = new_node
实现一个函数pop,不接受参数,将栈顶元素弹出,并返回其值。如果栈为空,则返回None。
def pop(self):
"""
弹出栈顶元素,并返回其值
"""
if self.top is None:
return None
else:
popped_node = self.top
self.top = popped_node.next_node
return popped_node.value
实现一个函数peek,不接受参数,返回栈顶元素的值。如果栈为空,则返回None。
def peek(self):
"""
返回栈顶元素的值,但不弹出
"""
if self.top is None:
return None
else:
return self.top.value
实现一个函数is_empty,不接受参数,返回布尔值,表示栈是否为空。
def is_empty(self):
"""
返回布尔值,表示栈是否为空
"""
return self.top is None
本题要求实现栈的基本操作,考察对链表和栈的掌握程度。在实现过程中,需要注意空栈的情况,并及时处理。除此之外,对于链表和栈的数据结构也需要清楚地理解,这对于以后的编程开发十分重要。