关于链表的两个示例
编程中操作链表是最基础也是最容易让人搞晕的东西。
两则demo警示自己不要忘记。
1. 翻转链表
public static ListNode reverseList(ListNode head) {
if (head == null || head.next == null) return head;
ListNode p = reverseList(head.next);
head.next.next = head;
head.next = null;
return p;
}
2. 两两交换
public static ListNode swapPairs(ListNode head) {
if (head != null && head.next != null ) {
ListNode nextHead = head.next.next;
ListNode next = head.next;
next.next = head;
head.next = swapPairs(nextHead);
return next;
}
return head;
}
其中链表的结构为:
/**
* Definition for singly-linked list.
*/
static class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
后记
如何不用递归实现?
网友评论