Java 通过列表中的ListNodes进行解析

Java 通过列表中的ListNodes进行解析,java,Java,我很难理解为什么我的代码不能通过列表中的列表节点s进行解析,以便将新的字符串作为列表节点添加。我正在尝试编写函数add(strings),向列表添加一个新的ListNode。如果列表为空,我只将字符串添加为列表节点,如果不是,我使用节点和myNext进行解析,然后如果节点.myNext为空,我将用新创建的列表节点替换它。这不起作用的原因是什么?它要么不抛出输出,要么说输出超出范围 public class List { private ListNode myHead; priva

我很难理解为什么我的代码不能通过
列表中的
列表节点
s进行解析,以便将新的
字符串作为
列表节点
添加。我正在尝试编写函数
add(strings)
,向
列表添加一个新的
ListNode
。如果列表为空,我只将
字符串添加为
列表节点
,如果不是,我使用
节点
myNext
进行解析,然后如果
节点.myNext
为空,我将用新创建的
列表节点
替换它。这不起作用的原因是什么?它要么不抛出输出,要么说输出超出范围

public class List {
    private ListNode myHead;
    private int mySize;

    public List() {
        this.myHead = null;
        this.mySize = 0;
  }

public class ListNode {
    public String myData;
    public ListNode myNext;

    public ListNode(String element, ListNode next) {
        this.myData = element;
        this.myNext = next;
    }


    public ListNode(String element) {
        this(element, null);
    }

    public boolean isEmpty() {
        return this.length() == 0;
   }

    public void add(String s) {
        if(this.isEmpty() == true) {
            this.addToFront(s);
        }
        else {
            this.mySize++;
            for(ListNode node = this.myHead; node.myData != null; node = node.myNext) {
                if(node.myNext == null) {
                    ListNode lno = new ListNode(s, null);
                    node.myNext = lno;
                }
                else {
                    node.myData = node.myData;
            }
        }
    }
}

在您的
ListNode
中,您不能访问
List
类的方法和变量。 假设您想在
列表顶部添加新的
字符串
,您应该执行以下操作:

public class List {
    private ListNode myHead;
    private int mySize;

    public List() {
        this.myHead = null;
        this.mySize = 0;
    }

    public boolean isEmpty() {
        return this.mySize == 0;
    }

    public void add(String s) {
        this.myHead = new ListNode(s, myHead);//add new String as head element
        this.mySize++;
    }
}

public class ListNode {
    public String myData;
    public ListNode myNext;

    public ListNode(String element, ListNode next) {
        this.myData = element;
        this.myNext = next;
    }

    public ListNode(String element) {
        this(element, null);
    }
}
public void add(String s) {
        if(this.isEmpty()){
            this.myHead = new ListNode(s, myHead);//add new String as head element
        }else{
            ListNode node = this.myHead;
            while (node.myNext != null){
                node = node.myNext;
            }
            //now you hav the last node of your list
            node.myNext = new ListNode(s,null);
        }
        this.mySize++;
    }
如果要将其添加到
列表的末尾
,可以这样尝试:

public class List {
    private ListNode myHead;
    private int mySize;

    public List() {
        this.myHead = null;
        this.mySize = 0;
    }

    public boolean isEmpty() {
        return this.mySize == 0;
    }

    public void add(String s) {
        this.myHead = new ListNode(s, myHead);//add new String as head element
        this.mySize++;
    }
}

public class ListNode {
    public String myData;
    public ListNode myNext;

    public ListNode(String element, ListNode next) {
        this.myData = element;
        this.myNext = next;
    }

    public ListNode(String element) {
        this(element, null);
    }
}
public void add(String s) {
        if(this.isEmpty()){
            this.myHead = new ListNode(s, myHead);//add new String as head element
        }else{
            ListNode node = this.myHead;
            while (node.myNext != null){
                node = node.myNext;
            }
            //now you hav the last node of your list
            node.myNext = new ListNode(s,null);
        }
        this.mySize++;
    }

您粘贴的代码不完整

另外,如果我是正确的,您的列表中有ListNodes,因此,您应该在列表中放置方法来检查它是否为空(其中没有任何ListNodes)或添加、删除、计数、搜索等功能

对于isEmpty(),没有定义长度(),因此只需检查大小是否为==0。
对于add(),如果为空,只需将myHead指向新的ListNode;如果必须在end中添加,请使用currentNode引用迭代myHead,直到其下一个值为null并添加


如果要在中间的某个位置,您需要检查ListNode myData,以确定它适合从myHead移动到null的位置,一旦找到要插入的位置,您需要更改[PrevNode]->new ListNode->[nextNode]

node.myData=node.myData的要点是什么?@UnholySheep我不知道还能放什么-就像占位符一样。