将单链表list逆转,将各节点的next指向其前驱,泛型方法,返回类型声明为参数T
时间: 2024-09-23 11:15:26 浏览: 58
在泛型编程中,如果你想创建一个可以处理任意类型节点的通用函数来反转单链表,你需要定义一个模板方法,其中`T`表示链表节点的数据类型。下面是一个通用的Java方法示例:
```java
public class ListNode<T> {
T data;
ListNode<T> next;
// 省略构造函数和getter/setter...
}
public class LinkedList<T> {
private ListNode<T> head;
public ListNode<T> reverse() {
if (head == null || head.next == null) {
return head; // 如果链表只有一个元素或空,则无需反转
}
ListNode<T> prev = null;
ListNode<T> curr = head;
while (curr != null) {
ListNode<T> nextTemp = curr.next; // 保存当前节点的下一个节点
curr.next = prev; // 反转当前节点的next指向前一个节点
prev = curr; // 移动prev到当前节点
curr = nextTemp; // 移动curr到下一个未处理的节点
}
return prev; // 返回反转后的链表头
}
}
```
在这个例子中,`ListNode<T>`代表一个泛型节点,`LinkedList<T>`代表一个包含这些节点的列表。`reverse()`方法接受一个`ListNode<T>`类型的参数并返回同样类型的值。
阅读全文