欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode题库 19.删除链表的倒数第N个结点(双指针法 C实现)

发布时间:2024/4/18 编程问答 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Leetcode题库 19.删除链表的倒数第N个结点(双指针法 C实现) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 解析
  • 思路
  • 代码

解析

临时结构体t指向head的前一个结点
p0指针指向被删除结点的前一个结点
p1指针遍历链表
flag表示p0与p1指针的相对距离

思路

使用p1遍历链表,p1移动一次flag自加1
当flag>n时,p0同步移动
此时p1领先p0(n+1)个身位,保证了p0指向倒数第n个数据结点的前一个结点
遍历完成后
第n个数据结点的前结点p0指向第n个数据结点的后结点,完成在链表中删除第n个数据结点的操作
最后除去生成的结点t,并返回(这一步也可用 return t->next; 代替)

代码

struct ListNode* removeNthFromEnd(struct ListNode* head, int n){//初始化struct ListNode *t=(struct ListNode*)malloc(sizeof(struct ListNode));t->val=-1;t->next=head;//指针创建struct ListNode *p0=t,*p1=head;int flag=0;//遍历开始while(p1!=NULL){if(flag++>=n) {p0=p0->next;}p1=p1->next;}p0->next=p0->next->next;t=t->next;return t; }

总结

以上是生活随笔为你收集整理的Leetcode题库 19.删除链表的倒数第N个结点(双指针法 C实现)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。