我是java编码的新手,我希望你们能够提供帮助:)
我想要实现的目标。
A - > B-> C-> ...
A
A->的乙 - > C-> ...
B->一种
A-> B-> C - > ...
C-> B->一种
以下是我的代码,希望你们能帮助我找出为什么我一直得到一个空列表。
Node cursor = head;
String temp;
while(cursor!=null){
temp = cursor.getElement();
newList.head=new Node(temp,newList.head);
cursor = cursor.getNext();
}
return newList;}
感谢您的回复和答案设法让它发挥作用:)继承代码以供将来参考。
public StringList reverse(){ StringList newList = new StringList();
{{1}}
答案 0 :(得分:0)
首先回答你的问题:你得到一个空列表,因为new StringList()
可能会返回。 (很难确定,因为你还没有向我们展示你的StringList
课程,而且它不是标准java库的一部分)。方法返回的值似乎不受其前面的代码的影响。同样,我无法肯定地说,因为您的变量head
不是方法的本地变量,因此它可以由StringList
构造函数引用。您可能真的想要将StringList
作为方法参数传递,然后使用其head
值或其他内容,而不是访问外部作用域中的某个变量。然后,您的返回值应该是StringList
的最终值构建的head
- 无法说明如何不看StringList
和Node
。
您的方法的主要代码几乎正确地反转了String值的链接列表。唯一的问题是您需要在head = null
之后设置cursor = head
。当你站起来时,你最终会得到你的反向列表,然后是原始列表(例如C,B,A,A,B,C)。 (假设你的Node
课以明显的方式行事。)
我假设这是一项作业或学习练习,否则请参阅Java的标准List
界面及其实现,以及Collections#reverse
答案 1 :(得分:0)
你错过了很多东西。
首先,您要撤消StringList
,但您的reverse
方法不会将其作为参数。
其次你使用head
变量(当然是StringList的头部?如果我们知道StringList方法/属性是什么会更好),而不是在任何地方初始化它。
第三,你创建一个节点(这里又是如何定义一个Node
?)但是从来没有使用它。
最后你返回一个空的StringList
,这只会让你有一个空的StringList
无论你以前做过什么奇妙的计算。
你应该(鉴于我们掌握的信息很少):
StringList
让我们称之为resultList