一.删除链表某一结点
直接跳过结点即可
二.删除链表的倒数第N个节点
解法一:自己写个方法获取链表长度,再找到结点删除
解法二:快慢指针,快指针先走n次,再通过while循环让慢指针走到n+1的位置进行删除
三.反转链表
解法一:C语言头插法,通过三个指针完成
解法二:利用栈先进后出的原理,通过Java中Stack类的push() pop()方法反转链表
四.合并两个有序链表
解法一:遍历每个链表的头结点,把小的放到新的链表中,直到一方为null,然后把另一方直接接上去
解法二:递归
五.回文链表
解法一:先反转再比较。反转可参考三。
解法二:通过将一半压入栈,在出栈比较
六.环形链表
解法一:快慢指针解决
解法二:用集合。将head存放到Set中,如果用重复则存在环。