19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) (leetcode-cn.com)
思路:利用快慢指针
【leetcode19. 删除链表的倒数第 N 个结点】遇到链表题首先就要创建一个虚拟头节点这样可以避免很多边界情况
首先定义一个快指针p和慢指针q同时指向我们的虚拟头节点,然后让p移动n次后,在让p和q同时移动直到p为空时,此时q就来到了倒数第N+1个结点,我们就之只要让q->next=q->next->next即可
完整代码
struct ListNode* removeNthFromEnd(struct ListNode* head, int n){struct ListNode*h=(struct ListNode*)malloc(sizeof(struct ListNode));//创建的虚拟头节点h->next=head;struct ListNode*p=h;//快指针struct ListNode*q=h;//慢指针int cur=0;if(head->next==NULL||head==NULL)//特殊情况判断return NULL;while(curnext;cur++;}p=p->next;while(p!=NULL)//再让快慢指针同时移动{p=p->next;q=q->next;}q->next=q->next->next;return h->next;}
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
