📜  门| GATE-CS-2005 |第 80 题(1)

📅  最后修改于: 2023-12-03 15:28:42.471000             🧑  作者: Mango

题目概述

本题为GATE-CS-2005第80题。本题要求考生实现一个简单的栈数据结构,并对其进行一系列操作。

题目详情

在这道题中,您需要实现以下栈操作:

  1. 压栈
  2. 出栈
  3. 取栈顶元素
  4. 判断栈是否为空
压栈

实现一个函数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

总结

本题要求实现栈的基本操作,考察对链表和栈的掌握程度。在实现过程中,需要注意空栈的情况,并及时处理。除此之外,对于链表和栈的数据结构也需要清楚地理解,这对于以后的编程开发十分重要。