4.1 两两交换链表中的节点
题目:
题解:
小结:
本题的难点是:终止条件的问题
如果链表的大小是偶数,cur指针会停留在最后一个节点的位置,即cur.next=null
如果链表的大小是奇数,cur指针会停留在倒数第二个节点的位置,即cur.next.next=null;
但是while循环并没有使用短路或,而是使用短路与,原因是:避免cur.next.next发生空指针异常
如果是或的话,当cur.next==null,还是会继续判断cur.next.next,这样就会导致空指针异常
4.2 删除链表的倒数第N个节点
思路:使用快慢指针,先让快指针移动n步,慢指针不动,然后同时移动,让快慢指针始终相差n个节点,这样当快指针指向Null的时候,就找到了倒数第N个节点
4.3 链表相交
4.4 循环链表
题目:
求解:
困惑: 循环条件中,到底什么时候才需要判断指针本身是否为空的情况