我有一个名为LinkStrand的类,其功能与链接列表非常相似。它有toString()
,size()
,append()
,next()
和value()
,但不是一个previous()
方法。我正在尝试编写反转节点顺序的代码,以及每个节点中的字符串。为了使我在其他一些我不得不写的方法中更容易,我在构建节点时摆脱了下一个节点需求。下面是Node类的样子:如何反转链接列表的执行顺序?
private class Node {
public Node myNext;
public String myData;
Node(String value) {
myData = value;
//myNext = next;
}
}
我.reverse()方法,目前反转所有单独的节点中的字符串,但不会反转节点本身的顺序。它被复制如下:
public IDnaStrand reverse() {
if (this == null)
return this;
Node prevStrand = null;
Node thisStrand = myHead;
String revString;
LinkStrand val = new LinkStrand();
while (thisStrand != null){
Node hold = thisStrand.myNext;
if (revSave.containsKey(thisStrand.myData)){
revString = revSave.get(thisStrand.myData);
val.append(revString);
//System.out.println("Val is: " + val);
}
else{
revString = reverseStr(thisStrand.myData);
val.append(revString);
//System.out.println("Val is: " + val);
revSave.put(thisStrand.myData, revString);
}
thisStrand.myData = revString;
thisStrand.myNext = prevStrand;
prevStrand = thisStrand;
thisStrand = hold;
}
return val;
}
我一直在试图想出某种办法扭转节点顺序,但我画一个空白。有谁知道我会怎么做?
谢谢!
反向实现是错误的,因为结果的最后一个元素!=原始的第一个元素,或者您必须在节点中实现接口Cloneable。或者你调用方法“reverseAndClone()”。 –