删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
1 | 给定一个链表: 1->2->3->4->5, 和 n = 2. |
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
思路:没有用一趟遍历实现,先借助一个辅助结点遍历链表得到链表节点的总个数count,然后通过count-n得到要删除的节点的位置,然后再借助一个辅助结点遍历到要删除的节点的位置,最后利用最经典的删除链表节点的方法去删除该节点。注意:若该节点为倒数第一个节点,需要重新调整删除算法。以及需要考虑链表只含有一个节点时的特殊情况。
代码如下:
1 | /** |