LeetCode--19.删除链表的倒数第N个结点

解题思路:

        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;//返回头结点
    }
};

纸上得来终觉浅,绝知此事要躬行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值