下面是Java实现单链表翻转的完整攻略。首先,要明确单链表的结构,单链表是一种数据结构,它是由一系列节点组成的,每个节点都包含了一个数据元素和一个指向下一个节点的引用。
- 首先定义一个单链表的节点类,包含数据元素和指向下一节点的指针。
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
- 创建一个链表的实例,并添加一些节点。例如以下代码添加了3个节点:1->2->3->null
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
- 创建一个新的链表翻转后的头节点,并使用一个指针指向当前节点,从头开始遍历原链表,每次将当前节点插入到新的头节点之后。循环终止条件是遍历到原链表的末尾节点null。
ListNode newHead = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = newHead;
newHead = curr;
curr = next;
}
- 最后输出新链表翻转后的元素,此时新链表翻转后的顺序为:3->2->1->null
while (newHead != null) {
System.out.print(newHead.val + "->");
newHead = newHead.next;
}
System.out.print("null");
最后给出两个示例说明:
示例一:对于链表1->2->3->4->5,翻转后的链表为5->4->3->2->1。
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);
ListNode newHead = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = newHead;
newHead = curr;
curr = next;
}
while (newHead != null) {
System.out.print(newHead.val + "->");
newHead = newHead.next;
}
System.out.print("null");
输出结果为:5->4->3->2->1->null
示例二:对于链表1->null,翻转后的链表为1->null。
ListNode head = new ListNode(1);
ListNode newHead = null;
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = newHead;
newHead = curr;
curr = next;
}
while (newHead != null) {
System.out.print(newHead.val + "->");
newHead = newHead.next;
}
System.out.print("null");
输出结果为:1->null
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现单链表翻转实例代码 - Python技术站