LeetCode---反转链表
程序员文章站
2024-03-22 18:03:52
...
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
public class test01 {
public static void main(String[] args) {
ListNode head = new ListNode(1);
ListNode node1 = new ListNode(2);
ListNode node2 = new ListNode(3);
ListNode node3 = new ListNode(4);
ListNode node4 = new ListNode(0);
head.setNext(node1);
node1.setNext(node2);
node2.setNext(node3);
node3.setNext(node4);
ListNode h = head;
while (null != h) {
System.out.print(h.getVal() + " ");
h = h.getNext();
}
System.out.println();
ListNode res = reverseListIterative(head);
h = res;
while (null != h) {
System.out.print(h.getVal() + " ");
h = h.getNext();
}
}
// 迭代法
public static ListNode reverseListIterative(ListNode head) {
ListNode prev = null; // 前指针节点
ListNode curr = head; // 当前指针节点
while (curr != null) { // 每次循环,都将当前节点指向它前面的节点,然后当前节点和前节点后移
ListNode nextTemp = curr.next; // 临时节点,暂存当前节点的下一个节点,用于后移
curr.next = prev; // 前节点指向它前面的节点
prev = curr; // 前指针后移
curr = nextTemp; // 当前指针后移
}
return prev;
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public ListNode getNext() {
return next;
}
public void setNext(ListNode next) {
this.next = next;
}
}
上一篇: 正则匹配算法题
下一篇: magento学习—5.自动化脚本构建