【问题标题】:Java Reverse Node StringlistJava 反向节点字符串列表
【发布时间】:2015-05-28 14:11:40
【问题描述】:

我是 Java 编码的新手,希望你们能提供帮助:)

我想要达到的目标。

A->B->C->...

一个


A->B->C->...

B->A


A->B->C->...

C->B->A

这是我的代码,希望你们能够帮助我找出为什么我总是得到一个空列表。

public StringList reverse(){

    Node cursor = head;

    String temp;
    while(cursor!=null){
        temp = cursor.getElement();
        head = new Node(temp,head);
        cursor = cursor.getNext();

    }

    return new StringList();}

感谢您的回复和答案设法让它工作:) 这里的代码供其他人将来参考。

公共字符串列表反向(){ StringList newList = new StringList();

    Node cursor = head;

    String temp;

    while(cursor!=null){
        temp = cursor.getElement();
        newList.head=new Node(temp,newList.head);
        cursor = cursor.getNext();

    }

    return newList;}

【问题讨论】:

  • 你在函数的末尾返回了一个新的 StringList。
  • 缺少很多代码吗? head 来自哪里?你对新的head 什么都不做,当然应该以某种方式返回。
  • 谢谢您,先生,但是我怎样才能将新节点添加到新的字符串列表中?如果我删除新的 StringList,返回值是多少?

标签: java nodes reverse


【解决方案1】:

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

您方法的主要代码几乎正确地反转了字符串值的链接列表。唯一的问题是您需要在cursor = head 之后设置head = null。就目前而言,您最终会得到反向列表,然后是原始列表(例如 C、B、A、A、B、C)。 (假设你的 Node 类的行为很明显。)

我假设这是一个作业或学习练习,否则请参阅 Java 的标准 List 接口及其实现,以及 Collections#reverse

【讨论】:

    【解决方案2】:

    你错过了很多东西。

    首先,您想要反转 StringList,但您的 reverse 方法不接受一个作为参数。

    其次,您使用 head 变量(肯定是 StringList 的头部?如果我们知道 StringList 的方法/属性是什么会更好),而无需在任何地方对其进行初始化。

    第三,您创建一个节点(这里又是如何定义 Node 的?),但之后再也不使用它。

    最后你返回一个空的StringList,这只会帮助你得到一个空的StringList,不管你以前做过什么奇妙的计算。

    你应该(鉴于我们掌握的信息很少):

    • 获取 StringList 作为方法的参数
    • 创建一个新的StringList 我们称之为resultList
    • 从列表中获取头部,并创建一个新节点
    • 以相反的顺序链接您的项目
    • 将新节点放入结果列表中
    • 返回结果列表

    【讨论】:

    • 感谢您的回答,我会调查的 :)
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 2014-07-10
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2012-12-07
    相关资源
    最近更新 更多