gpt4 book ai didi

java - 链表堆栈实现 - Java

转载 作者:太空宇宙 更新时间:2023-11-04 13:31:21 24 4
gpt4 key购买 nike

我必须为我的一项作业以链接列表的形式实现一个堆栈。我们必须实现接口(interface) DStack,它在 LinkedList.java 文件中具有 push()pop()peek()isEmpty() 方法。该列表将采用一系列 double 作为其内容。

我仍在努力解决的问题基本上是链表的 push()pop() 方法。我不确定我所做的节点,但这是我到目前为止的代码:

public class ListStack implements DStack{

private Node head;
private int size;


private class Node{
double d;
Node next;

public Node(){
head = null;
next = null;
}

public Node(double data){
d = data;
}
}

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

@Override
public void push(double d) {
if(!isEmpty()){
Node newHead = new Node(d);
newHead.next = head;
head = newHead;
size++;
}
else
throw new EmptyStackException(); //To change body of generated methods, choose Tools | Templates.
}

@Override
public double pop() {
if(!isEmpty()){
double d = head.d;
head = head.next;
size--;
return d;
}
else
throw new EmptyStackException(); //To change body of generated methods, choose Tools | Templates.
}

@Override
public double peek() {
if(!isEmpty()){
return head.d;
}
else
throw new EmptyStackException(); //To change body of generated methods, choose Tools | Templates.
}

如果我正确执行 push()pop() 方法,有人可以建议我吗?如果不是的话,我具体需要修改哪里呢?我正在网上寻找解释,但大多数 Material 对我来说并没有真正意义。

此外,我的老师禁止我们使用 Java 框架或其他类库中的任何其他类。这是否意味着我无法在代码中使用 Iterable ?如果是这样,那么就不需要为链表创建额外的方法,例如 remove()next() 等,对吗?

我仍然对这些链接列表概念感到困惑,所以如果有人能澄清这一点,我将非常感激。谢谢!

最佳答案

看起来不错,需要初始化 head,否则推送/弹出总是会抛出异常。当不可能时,请考虑抛出堆栈已满异常,而不是抛出空堆栈异常。这将是无限的列表容量,也许您可​​以考虑使用固定容量,然后推送就会受到限制。

关于java - 链表堆栈实现 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32173090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com