解题思路:
1.获取信息:删除链表的倒数第n个结点,返回头结点
2.分析题目:略
3.示例查验:略
4.尝试编写代码:
题目比较简单,我就给出一种我认为比较好的办法
思路:使用栈来储存各个结点的地址,并且是从头节点开始存起,按照栈的性质,后进先出,就对后面 n 个结点进行出栈操作,再访问栈顶进行元素删减操作,即可
我考虑到如果出栈出得给栈出空了怎么办,所以我打算在头结点前添加一个前置结点dummy
以下是完整代码
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode*dummy=new ListNode(0,head);//前置结点
stack<ListNode*>s;//用来储存结点地址的栈
s.push(dummy);//先将前置结点放入栈中
while(head!=nullptr){//依次将各个结点的地址放入栈中
s.push(head);
head=head->next;
}
while(n--){//出栈操作
s.pop();
}
ListNode*temp=s.top();//删除结点的操作
temp->next=temp->next->next;
return dummy->next;//返回头结点
}
};
纸上得来终觉浅,绝知此事要躬行

被折叠的 条评论
为什么被折叠?



