您好我想知道如何撤销单链表。从我到目前为止看过的例子来看,反向方法的返回类型为void,我需要一个具有单链表(SLL)返回类型的方法。我有一个名为Node的内部类来处理所有节点引用。
这是我到目前为止所做的:
public SLL<E> reverse() {
Node<E> first = null;
Node<E> current = this; // produces compilation error
while (current != null) {
Node<E> save = current;
current = current.next;
save.next = first;
first = save;
}
return first;
}
我收到以下编译错误:
错误:不兼容的类型 required:myprog.SLL.Node 发现:myprog.SLL
我只是想知道在处理Node时如何返回类型为SLL的列表。我也认为我的回复陈述可能是错误的。
如果您需要更多代码来理解我的问题,请问:)
提前致谢!
答案 0 :(得分:1)
SLL应该是一个类,带有指向列表中第一个节点的“head”或“first”指针。
如果您打算返回SLL,那么可能是新 SLL与 new 节点,从原始节点以相反顺序复制。
public SLL<E> reverse() {
SLL<E> result = new SLL<E>();
// copy Nodes into new list, in reverse order.
//
Node<E> read = this.first;
while (read != null) {
// insert Copy, first;
Node<E> copy = new Node<E>( read.getItem());
copy.next = result.first;
result.first = copy;
// advance 'Read Position'.
read = read.next;
}
// done.
return result;
}
如果您正在改变原始SLL以进行原位反转(尚未检查您的代码是否适用于此),则不应返回SLL结果,只是无效。
希望这有帮助。