gpt4 book ai didi

java - 如何反转我的链表?

转载 作者:行者123 更新时间:2023-11-30 03:56:12 24 4
gpt4 key购买 nike

我需要知道如何反转我的链接列表。

我将发布我的 Node 和 LinkedList 类。另外两个是驱动程序(它创建我的 TUI 类的实例,我的 TUI 类询问用户将哪个单词添加到 LinkedList,然后打印列表并反转它(通过调用 LinkedList 中的反向方法,这就是我的方法)需要帮助)

我不知道在 LinkedList 中为反向方法写什么

节点类:

public class Node {

private String data;
private Node next;

public Node(String data, Node next) {
this.data = data;
this.next = next;
}

public Node(String data) {
this.data = data;
this.next = null;
}

public String getData() {
return this.data;
}
public Node getNext() {
return this.next;
}

public void setNext(Node nextNode) {
this.next = nextNode;
}

public String toString() {
return this.data;
}
}

链表类:

public class LinkedList {

private Node head;
private Node tail;

public LinkedList() {
this.head = null;
this.tail = null;
}

public void prepend(String data) {
Node newNode = new Node(data, this.head);
if (this.head == null) {
this.head = newNode;
this.tail = newNode;
} else {
this.head = newNode;
}
}

public void printList() {
Node current = this.head;

while (current != null) {
System.out.println(current.getData());
current = current.getNext();
}
}

public void append(String data) {
Node newNode = new Node(data);

if (this.head == null) {
this.head = newNode;
this.tail = newNode;
} else {
this.tail.setNext(newNode);
this.tail = newNode;
}
}

public void reverse() {

}
}

最佳答案

这应该可以完成工作。这个想法是,对于每个列表节点,临时复制其下一个节点,将其下一个节点设置为前一个节点,并将前一个节点设置为它。也可以递归地完成。

public void reverse() {
Node prev = null;
Node current = head;
while (current != null) {
Node next = current.getNext();
current.setNext(prev);
prev = current;
current = next;
}
this.head = prev;
}

编辑:您还需要更新尾部引用

关于java - 如何反转我的链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23122955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com