反转链表java
时间: 2023-07-10 15:15:46 浏览: 58
反转链表是指将一个单向链表的每个节点的指向反转,即原来指向下一个节点的指针变成指向前一个节点。下面是反转链表的Java代码实现:
```java
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode temp = curr.next;
curr.next = prev;
prev = curr;
curr = temp;
}
return prev;
}
```
在这个代码中,我们使用了三个指针,分别指向当前节点(curr)、前一个节点(prev)和后一个节点(temp)。我们每次将当前节点的指针指向前一个节点,然后依次移动三个指针即可。最后返回反转后的头节点(即原来的尾节点)。
需要注意的是,在反转链表时,一定要先将当前节点的next指针保存到一个临时变量中,否则在修改指针时会造成链表的断裂。
相关问题
反转链表的java实现
你可以使用以下代码来实现反转链表的 Java 实现:
```java
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
public class ReverseLinkedList {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode nextTemp = curr.next;
curr.next = prev;
prev = curr;
curr = nextTemp;
}
return prev;
}
}
```
在这个例子中,我们定义了一个 `ListNode` 类来表示链表的节点。然后,我们创建了一个 `ReverseLinkedList` 类,其中包含了一个名为 `reverseList` 的方法来反转链表。
在 `reverseList` 方法中,我们使用三个指针:`prev`、`curr` 和 `nextTemp`。开始时,`prev` 和 `nextTemp` 都为 null,`curr` 指向头节点 `head`。
然后,我们进入一个循环,条件是 `curr` 不为 null。在循环内部,我们首先将 `curr` 的下一个节点保存到 `nextTemp` 中,然后将 `curr` 的下一个节点指向 `prev`,实现了链表的反转。接着,我们将 `prev` 更新为 `curr`,`curr` 更新为 `nextTemp`,继续下一次循环。
最后,当循环结束时,返回 `prev`,即为反转后的链表的头节点。
希望这可以帮助到你!如果有任何疑问,请随时提出。
java pta 1025 反转链表
好的,第一个问题是:
如何使用Java反转链表?
回答如下:
要反转链表,我们需要进行以下几个步骤:
1. 创建一个新的链表,作为反转后的链表;
2. 遍历原链表,将原链表中的每个节点插入到新链表的头部;
3. 返回新链表。
以下是Java代码实现:
```java
public ListNode reverseList(ListNode head) {
ListNode newHead = null;
while (head != null) {
ListNode next = head.next;
head.next = newHead;
newHead = head;
head = next;
}
return newHead;
}
```