📜  门| GATE-CS-2015(Set 2)|问题13(1)

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

题目介绍

这是 Gate CS 2015 的第二套试卷中的第13个问题,适合程序员们的复习和学习。本题要求编写一个 Java 类,实现一个基本的数据结构以及相应的操作。

问题描述

编写一个 Java 类,实现一个基本的数据结构和以下操作:

  • push(int x) : 将元素x添加到堆栈的顶部
  • int pop() : 删除并返回堆栈的顶部元素
  • int peek() : 返回堆栈的顶部元素
  • boolean isEmpty() : 如果堆栈为空,则返回真
  • int size() : 返回堆栈中元素的数量

要求使用链表实现堆栈。

解题思路

本题需要实现基本的堆栈,即先进先出(FIFO)的数据结构。我们可以使用链表来实现该数据结构。链表中每个节点都保存一个元素,并且有指向下一个节点的指针。堆栈顶部的元素即是链表的头部元素,插入和删除操作可以通过调整链表中的指针来实现。

使用链表时,插入和删除操作都是 O(1) 的时间复杂度。因此,这个数据结构非常适用于在需要高效地插入和删除元素时使用。

以下是实现该数据结构的代码:

public class LinkedListStack {
    private Node head;
    private int size;

    private class Node {
        int val;
        Node next;

        Node(int x) {
            val = x;
            next = null;
        }
    }

    public void push(int x) {
        Node newNode = new Node(x);
        newNode.next = head;
        head = newNode;
        size++;
    }

    public int pop() {
        if (isEmpty()) {
            throw new NoSuchElementException("Stack Underflow");
        }
        int value = head.val;
        head = head.next;
        size--;
        return value;
    }

    public int peek() {
        if (isEmpty()) {
            throw new NoSuchElementException("Stack Underflow");
        }
        return head.val;
    }

    public boolean isEmpty() {
        return head == null;
    }

    public int size() {
        return size;
    }
}

总结

以上就是解决 Gate CS 2015 (Set 2) 中第13个问题的思路和代码,如有不理解的地方,请参考代码中的注释或者留言提问。该数据结构是程序员们在实际工作中经常使用的,因此必须掌握其实现方法和使用场景。