Java反向节点字符串列表

时间:2015-05-28 14:11:40

标签: java nodes reverse

我是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}}

2 个答案:

答案 0 :(得分:0)

首先回答你的问题:你得到一个空列表,因为new StringList()可能会返回。 (很难确定,因为你还没有向我们展示你的StringList课程,而且它不是标准java库的一部分)。方法返回的值似乎不受其前面的代码的影响。同样,我无法肯定地说,因为您的变量head不是方法的本地变量,因此它可以由StringList构造函数引用。您可能真的想要将StringList作为方法参数传递,然后使用其head值或其他内容,而不是访问外部作用域中的某个变量。然后,您的返回值应该是StringList的最终值构建的head - 无法说明如何不看StringListNode

您的方法的主要代码几乎正确地反转了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作为方法的参数
  • 创建一个新的StringList让我们称之为resultList
  • 从列表中获取头部,并创建一个新节点
  • 按相反顺序链接您的项目
  • 将新节点放入resultList
  • 返回resultList