用Java为CLinkList类增加以下方法: 实现单链表的就地逆置: pubic void reverse() 并将实例代码结果运行出来
时间: 2024-09-25 10:06:58 浏览: 35
在Java中,我们可以创建一个名为`CLinkedList`的单链表类,并添加一个`reverse()`方法来进行就地逆置操作。首先,我们需要定义链表节点类`Node`,然后在`CLinkedList`类中实现逆置逻辑。这里是一个简单的实现:
```java
// 定义链表节点类
class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
this.next = null;
}
}
// CLinkedList 类
public class CLinkedList<T> {
private Node head;
// 添加元素到链表头部
public void addFirst(T data) {
Node newNode = new Node(data);
newNode.next = head;
head = newNode;
}
// 就地逆置链表
public void reverse() {
if (head == null || head.next == null) {
return; // 空链表或只有一个元素无需反转
}
Node prev = null;
Node current = head;
Node nextTemp = null;
while (current != null) {
nextTemp = current.next;
current.next = prev;
prev = current;
current = nextTemp;
}
head = prev; // 更新头节点
}
// 打印链表内容供测试
public void printList() {
Node temp = head;
while (temp != null) {
System.out.print(temp.data + " -> ");
temp = temp.next;
}
System.out.println("null");
}
public static void main(String[] args) {
// 创建一个CLinkedList实例并填充数据
CLinkedList<Integer> list = new CLinkedList<>();
list.addFirst(5);
list.addFirst(4);
list.addFirst(3);
System.out.println("Original List:");
list.printList();
// 逆置链表
list.reverse();
System.out.println("\nReversed List:");
list.printList();
}
}
```
在这个例子中,我们先创建了一个包含三个整数的链表,然后调用`reverse()`方法将其逆置,最后打印出原始链表和逆置后的链表。
阅读全文