前言
方法和思路如下
一、链接点这里
二、使用步骤
1.引入库
代码如下(示例):
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
struct ListNode* newhead=(struct ListNode*)malloc(sizeof(struct ListNode));
newhead->next=head;
struct ListNode* slow=newhead;
struct ListNode* fast=newhead;
while(n--)//让fast走动n次
{
fast=fast->next;
}
struct ListNode* cur=newhead;//保存slow上一个节点
while(fast)
{
cur=slow;
fast=fast->next;
slow=slow->next;
}
cur->next=slow->next;
struct ListNode* ret=newhead->next;
free(slow);
free(newhead);
return ret;
}
2.读入数据
总结
这里用到了带哨兵位的头结点,方法很巧妙,可以解决很多的临界问题,链表的题大多数都要用到此类方法.