数据结构之线性表的链式存储实现java,实现就地逆转函数
时间: 2024-09-24 08:09:19 浏览: 37
线性表的链式存储实现通常涉及创建一个节点类,每个节点包含数据元素和指向下一个节点的指针。在Java中,我们可以这样做:
```java
public class Node {
int data; // 节点的数据
Node next; // 指向下一个节点的引用
public Node(int data) {
this.data = data;
this.next = null;
}
}
public class LinkedList {
private Node head;
// 添加节点到链表头部
public void addNode(int data) {
Node newNode = new Node(data);
newNode.next = head;
head = newNode;
}
// 就地逆转链表(反转链表但不修改节点位置)
public void reverseInPlace() {
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; // 移动prev向前一位
current = nextTemp; // 移动current前进一位
}
head = prev; // 最后,将头节点更新为反转后的头
}
// 其他方法如获取链表长度、遍历等...
}
```