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我不知道还能放什么-就像占位符一样。