请采用头插法建表的思路,为单链表类class LinkListClass<E>设计一个置逆表中所有结点的成员方法public void Reverse()。
时间: 2024-02-28 09:57:50 浏览: 63
好的,根据您的要求,我为您提供一个采用头插法建表思路的单链表类 `LinkListClass<E>`,并且添加了一个名为 `Reverse()` 的成员方法,用于置逆表中所有节点的顺序。以下是完整的代码:
```java
public class LinkListClass<E> {
private Node<E> head;
public LinkListClass() {
head = null;
}
public void add(E item) {
Node<E> newNode = new Node<E>(item);
newNode.next = head;
head = newNode;
}
public void display() {
Node<E> current = head;
while (current != null) {
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
}
public void reverse() {
Node<E> prev = null;
Node<E> current = head;
Node<E> next = null;
while (current != null) {
next = current.next;
current.next = prev;
prev = current;
current = next;
}
head = prev;
}
private static class Node<E> {
private E data;
private Node<E> next;
public Node(E data) {
this.data = data;
next = null;
}
}
}
```
这个类中的 `reverse()` 方法使用了头插法的思路,将链表中的节点顺序进行了置逆。在 `reverse()` 方法中,我们使用了三个节点变量 `prev`、`current` 和 `next`,它们分别表示当前节点的前一个节点、当前节点和下一个节点。在循环中,我们将当前节点的指针指向前一个节点,然后将三个节点变量向后移动一个位置,直到链表中的所有节点都被置逆。
您可以在其他代码中使用这个类,并调用 `Reverse()` 方法来将链表中的节点顺序进行置逆。例如:
```java
LinkListClass<Integer> list = new LinkListClass<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.display(); // 输出:4 3 2 1
list.reverse();
list.display(); // 输出:1 2 3 4
```
请注意,这个类中的 `add()` 方法使用了头插法来添加新节点。如果您想要使用其他方法来添加节点,可以根据您的需求进行修改。
阅读全文