删除链表的倒数第N个节点

题目来源于力扣–https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn2925/

一、最容易想到的方法就是,计算出链表的长度,用长度减去n就是要删除节点的前一个节点,这里要注意的是,如果计算出来的节点位置为0,表示要删除第一个节点,直接头指针往后移一下就可以了。知道了前一个节点,删除后边的节点就好办了。假设指针p指向前驱结点,用一个临时的指针q指向要删除的节点,p->next = q->next,free(q),q=NULL,就把q指向的节点删除了

看图:
在这里插入图片描述
main函数代码

#include<stdio.h>
#include<stdlib.h>
struct ListNode* removeNthFromEnd(struct ListNode* head, int n);
// 结构体 
struct ListNode {
   
   
    int val;
    struct ListNode *next;
 };
int main(){
   
   
	// 动态申请四个空间 
	struct ListNode *a = (struct ListNode *)malloc(sizeof(struct ListNode));
	struct ListNode *b = (struct ListNode *)malloc(sizeof
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值