方法一:找位置遍历遇到删除的就删除;
方法二:在新的链表对符合条件的删去,不符合的连接指针移位;
方法三:哨兵链表
1:哨兵位的链表可以防止部分空指针的情况,但是要记住返回头指针的下一位,但是要返回原来
的链表;
2:删除时要牢记需要移位,和需要连接的两种情况;
需要移位,一定要新设指针去保留需要的地址;
需要连接尤其是删除位置后的连接,因为与删除位置下一位置的连接之后会改变该结点next值,之后就找不到要删除的地址了;所以也需要新设指针保存地址;
3:看到 x->Next 要想到x是否为空指针;
4:写oj题时,应该先解决常规情况,再考虑其他有可能的情况,有可能常规情况已经包括了特殊情况;
方法一:
方法二:
这两种方法一个通过头插的方式,一个通过改变指向的方式来解决;头插考虑cur移位地址丢失的问题,改变指向也要考虑地址遗失问题;
带有哨兵位的解法;
1:链表的合并这是将多个链表分成为一个链表,其本质来说还是单链表的尾插问题;
2:链表的切割问题本质就是将一条单链表分为两个新的单链表然后分为一条单链表;但在次单链表的切割问题,尾插一定注意尾的Next值;防止成环;
3:尾插在循环中一般也分几种情况;一般指一个循环多种条件;
第一步:创建复制新的结点,并将新的结点相联系;
第二步:将随机指针指向原来所对应位置;
第三步:负责新链表的尾插,链表为空的情况;
单链表之快慢指针解法;
这是几道经典的关于单链表指针快慢的问题,而快慢指针也常用于单链表,快慢指针一般有两个形式:
1:快指针先走K步(取决于题目),然后快慢指针保持相同距离一起走直到符合题意;一般用于双链表;
2:快指针走X+K步,慢指针走X步,一起保持相同的差距步(K)步走;
3:快慢指针一般分为多种循环情况,既有多种循环条件;但是循环内条件比较单一;