第三天 链表 203 707 206

203移除元素)

1)在原链表上进行直接移除

没有思路上的问题 但是在实现第一遍的时候没有想到头结点的特殊情况(刷题太少了不能一次就考虑到所有情况)

在代码实现上

ListNode* removeElements(ListNode* head, int val) {
        while(head!=NULL&&head->val==val){
            ListNode*temp =head;
            head=head->next;
            delete temp;
        }

理解上小磕绊出现在这里的temp是指针指向而已 并非节点

2)虚拟头结点

思路和直接移除相差不大 是将一个操作普适化  优化了头结点的特殊处理部分,

代码处理方面这块完全忽略自己做直接返回了虚拟的头结点

head=hummyhead->next;
        delete hummyhead;
        return head;

707)设计链表

1)设计虚拟头结点以及删除index节点 在上一个203)已经学会

2)思路卡壳在寻找指定下标没有想到用index--的形式一直想着把他作为参数传进来直接一步到位

3)细节——size++老是遗漏

4)tips:理解加深 cur  —current 保护head不变的临时遍历指针 链表需要返回的就是链表的头指针

206)翻转链表

双指针)(没有太多思路完全没想到如何运用双指针);

递归)参照双指针的思路第一次学

总结

1)看双指针需要什么 决定了传入什么 

2)递归函数调用实时机就是循环开始第二轮的时机

3)非递归的一些赋值初始化工作可以放到递归传参的步骤里来实现。

reverse(head,NULL)
        ListNode* cur = head;
        ListNode* pre = NULL;

上述两个代码就是等效的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值