设计一个算法,通过遍历一趟,将链表中所有结点的链接标的目的逆转,仍利用原表 存储空间.
时间: 2024-01-27 20:04:03 浏览: 125
好的,这是一个关于数据结构的问题,可以进行回答。
对于这个问题,可以使用三个指针逐个翻转节点的链接。具体思路如下:
1.定义三个指针p,q,r,分别指向当前节点,前一个节点和后一个节点。
2.遍历整个链表,每次将当前节点的链接指向前一个节点,然后依次移动p、q、r指针向前。
3.最后将头节点的链接指向null,返回新的头节点。
代码实现如下:
```java
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode p = head;
ListNode q = null;
ListNode r = null;
while (p != null) {
r = p.next;
p.next = q;
q = p;
p = r;
}
head.next = null;
return q;
}
```
阅读全文