用Java写一个逆置单链表
单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用。逆置单链表是指将原来的单链表中的节点顺序颠倒过来。
在这篇文章中,我们将使用Java来实现逆置单链表的功能。我们将会介绍单链表的基本概念,并给出逆置单链表的实现代码。让我们开始吧!
单链表的基本概念
首先,让我们来了解一下单链表的基本概念。单链表由一个个节点组成,每个节点包含两部分内容:数据元素和指向下一个节点的引用。最后一个节点的引用为空。
下图是一个包含5个节点的示例单链表:
+---+ +---+ +---+ +---+ +---+
| 1 | -> | 2 | -> | 3 | -> | 4 | -> | 5 |
+---+ +---+ +---+ +---+ +---+
在上述单链表中,节点1包含数据元素1和指向节点2的引用。节点2包含数据元素2和指向节点3的引用,以此类推。节点5是最后一个节点,它的引用为空。
逆置单链表的实现
现在,让我们来看一下如何实现逆置单链表的功能。我们可以使用迭代的方式来逆置单链表。
首先,我们需要维护三个指针:current
、previous
和next
。初始时,current
指向头节点,previous
和next
都为null
。
然后,我们需要通过循环遍历单链表,将当前节点的引用反转。具体步骤如下:
- 将当前节点的下一个节点保存到临时变量
next
中。 - 将当前节点的引用指向前一个节点,即将
current.next
设置为previous
。 - 将前一个节点的引用更新为当前节点,即将
previous
设置为current
。 - 将当前节点更新为下一个节点,即将
current
设置为next
。 - 重复步骤1-4,直到遍历完整个链表。
最后,将最后一个节点的引用设置为null
,将新的头节点返回。
下面是用Java实现逆置单链表的代码示例:
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
class LinkedList {
ListNode reverse(ListNode head) {
ListNode current = head;
ListNode previous = null;
ListNode next = null;
while (current != null) {
next = current.next;
current.next = previous;
previous = current;
current = next;
}
return previous;
}
}
public class Main {
public static void main(String[] args) {
// 创建一个包含5个节点的单链表
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
ListNode node4 = new ListNode(4);
ListNode node5 = new ListNode(5);
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
// 创建一个LinkedList对象
LinkedList linkedList = new LinkedList();
// 逆置单链表
ListNode reversedHead = linkedList.reverse(node1);
// 打印逆置后的单链表
ListNode current = reversedHead;
while (current != null) {
System.out.print(current.val + " ");
current = current.next;
}
}
}
以上代码中,我们创建了一个包含5个节点的单链表,然后通过LinkedList
类中的reverse
方法来逆置单链表。最后,我们打印逆置后的单链表的值。
总结
本文介绍了单链表的基本概念,并给出了使用Java实现逆置单链表的示例代码。逆置单链表可以通过迭代的方式实现,需要维护三个指针来完成反转操作。希望本文对你理解
标签:单链,ListNode,next,current,java,节点,逆置 From: https://blog.51cto.com/u_16175431/6738377