技巧一:理解指针或引用的含义
把变量复制给指针,实际上是让指针指向变量的内存地址;相当于java的应用;
技巧二:警惕指针丢失和内存泄漏
删除链表节点,如c语言,需要主动释放内存;
技巧三:利用哨兵简化实现难度
合理利用哨兵可以减少判断,大数据量下可以提高性能;
技巧四:重点留意边界条件处理
空链表;
链表只包含一个节点;
链表只包含两个节点;
处理链表头或者链表尾;
技巧五:举例画图,辅助思考
技巧六:多写多练,没有捷径
-
单链表反转
public ListNode reverseList(ListNode head) {
if(head==null|| head.next==null){
return head;
}
ListNode prev=null;
ListNode curr=head;
while(curr!=null){
ListNode temp=curr.next;
curr.next=prev;
prev=curr;
curr=temp;
}
return prev;
}
-
链表中环的检测
-
两个有序的链表合并
-
删除链表倒数第 n 个结点
-
求链表的中间结点