问题遇到的现象和发生背景
删除链表中倒数第N个结点,帮忙看看思路哪里出问题了
用代码块功能插入代码,请勿粘贴截图
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
//dummy-1-2-3-4-5-6-null
struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
struct ListNode *DummyNode=(struct ListNode*)malloc(sizeof(struct ListNode));
DummyNode->next=head;
struct ListNode* fast = DummyNode;
struct ListNode* slow = DummyNode;
for(int i=0;i<=n;i++)
{
fast=fast->next;
}
while(fast!=NULL)
{
fast=fast->next;
slow=slow->next;
}
slow->next=slow->next->next;
slow->next->next=NULL;//这句话加和不加都报错了
free(slow->next);
return DummyNode->next;
}
运行结果及报错内容
我的解答思路和尝试过的方法
leecode的一个题,我的思路是快慢指针,先创建一个虚拟头节点DummyNode,DummyNode->next=head。
然https://img-mid.csdnimg.cn/release/static/image/mid/ask/862891981966175.png "#left")
后fast和slow指针同时先指向DummyNode,fast指针先移动n+1个单位,然后slow和fast同时移动,直到fast为NULL时停止。
停止后slow->next即为待删除的结点
实在想不到哪里出了问题。各位帮忙看看
我想要达到的结果
正确结果