Java 正在反转链接列表,但未解析第一个节点
我编写了一个链表实现,它以firstNode为首,以lastNode结束。我正试图扭转这个列表,除了firstNode,它做得很好。假设列表中有从firstNode到lastNode的以下数据:“一”、“二”、“三”、“四”、“五”。当我运行reverseMePlz()方法时,将显示以下内容:四、三、二、一。原来的firstNode(一个)现在是lastNode,原来的lastNode(五个)不是成为firstNode,而是两个应该是第二个node的节点变成了firstNode,所以本质上它删除了原来的lastNode,应该是firstNode。这是我的密码:Java 正在反转链接列表,但未解析第一个节点,java,linked-list,Java,Linked List,我编写了一个链表实现,它以firstNode为首,以lastNode结束。我正试图扭转这个列表,除了firstNode,它做得很好。假设列表中有从firstNode到lastNode的以下数据:“一”、“二”、“三”、“四”、“五”。当我运行reverseMePlz()方法时,将显示以下内容:四、三、二、一。原来的firstNode(一个)现在是lastNode,原来的lastNode(五个)不是成为firstNode,而是两个应该是第二个node的节点变成了firstNode,所以本质上它删除
public void reverseMePlz()
{
Node nextNode = null;
Node currentNode = firstNode;
while (currentNode.next != null)
{
nextNode = currentNode.next;
currentNode.next = currentNode.previous;
firstNode = currentNode;
currentNode = nextNode;
}
lastNode = currentNode;
}
将
while
循环的条件更改为
while(currentNode!=null)
这是密码
public void reverse(Node headNode) {
Node nextNode = null;
Node previousNode = null;
Node currentNode = headNode;
while(currentNode!=null) {
nextNode = currentNode.next;
currentNode.next = previousNode;
currentNode.previous = nextNode;
previousNode = currentNode;
currentNode = nextNode;
}
headNode = previousNode;
}
我想出来了。这就是我的解决方案:
public void reverseMePlz()
{
Node nextNode = null, currentNode = firstNode, first = firstNode;
while (currentNode.next != null)
{
nextNode = currentNode.next;
currentNode.next = currentNode.previous;
currentNode.previous = nextNode;
firstNode = currentNode;
currentNode = nextNode;
}
lastNode.next = firstNode;
firstNode = lastNode;
lastNode = first;
firstNode.previous = null;
}
这是一个双链接列表,对吗?是的,它是双链接的。Node是我的list类中的一个私有类,具有以下实例变量:T data、Node next、Node previous。但是,当您反向运行时,您没有更改“previous”的链接,很高兴您找到了它。删除了我的答案,因为我把某个地方搞砸了。