📅  最后修改于: 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个问题的思路和代码,如有不理解的地方,请参考代码中的注释或者留言提问。该数据结构是程序员们在实际工作中经常使用的,因此必须掌握其实现方法和使用场景。