这应该是一个相当基本的问题,但我不能为我的生活弄清楚.我正在使用我的讲师给我的两个文件,我必须编写一个方法removeFirst,将从已声明的链表中删除头并返回旧的头值.它不能采取任何参数.这是文件1和文件2.
我的removeFirst和调试代码如下.我不知道如何引用它aList而不能将它用作参数,特别是因为链表不是全局的.当我使用调试代码时,它会打印aList,然后打印21(它应该删除的列表的头部,以及removeFirst应该返回的内容),但是它不会打印更新的链接列表 - 它只是空白.
removeFirst 码:
public IntNode removeFirst() {
IntNode cur = getHead();
head = cur.getNext();
head.setPrev(null);
cur.setNext(null);
return cur;
}
Run Code Online (Sandbox Code Playgroud)
调试代码(在底部main):
for(int i = 0; i < aList.size(aList.getHead()); i++) {
aList.print(aList.findObject(i));
}
aList.print(aList.removeFirst());
System.out.println("");
for(int j = 0; j < aList.size(aList.getHead()); j++) {
aList.print(aList.findObject(j));
}
Run Code Online (Sandbox Code Playgroud)
你需要return head;代替return cur;
编辑抱歉.我显然误解了你的问题陈述.如果该removeFirst()方法应该返回列表的新头部,则上述内容是合适的.如果它应该返回被删除的元素(现在在你的评论和原始帖子的编辑之后就清楚了),那么它应该正常工作.
可能removeHead()是列表类中的实例方法.您不需要传递参数,因为该列表this在方法内部可用.
它有助于查看类的定义aList.你的file 1链接说明是MyLinkedList.java,但是粘贴的代码是针对IntNode.java的.
编辑2我认为问题可能是您的调试代码.findObject(j)不返回列表的j第th个元素 - 它返回包含j值的列表元素.从代码中,它看起来像MyLinkedList.print(IntNode)从指定节点开始打印整个列表.如果for用简单的代码替换调试代码中的循环会发生什么:
aList.print(aList.getHead());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6490 次 |
| 最近记录: |