函数书写的一点总结

     最近因为总是要在纸上书写代码,所以从中还是发现自己的一些问题:总结一下,希望能时刻记住这些东西;

     要说的倒不是一些具体的东西,还是比较笼统的;

    《剑指offer》中的面试题56还是让我感觉到了自己在书写函数的时候的不足:

      其中最重要的就是,在写函数的时候一定要列出一个流程,将函数分成几个小部分;只有当自己对这几个小部分想清楚了再下手写函数;

      对于一个函数的功能,首先要做的就是分析它的流程,譬如面试题56中的这个函数,我们首先要知道它的处理流程:

      因为要找到重复的元素,所以我们肯定要遍历每个节点,这样就需要一个ListNode*类型的变量pNode,对于这个pNode,如果存在下一个节点,那么我们就要去分析pNode和下一个节点的大小关系;

       如果这两个点不相等,我们就继续向下遍历;

        如果相等的话,肯定就需要将这些节点删除,我们在这个时候可以设置一个指针pToBeDeleted(尽量让每个变量都有它自己的作用是很重要的,只有这样我们才能使得函数的思路更加的清晰),此时就需要去从pNode开始一个一个去遍历是否和pNode相等,这个时候对于要,对于pToBeDeleted这个变量我们可以将它和pNext相关联,因为如果pToBeDeleted满足条件需要删除的话,我们要能知道下一个节点的位置,而且这个“下一个iejiedian的位置”非常符合pNext的意义;一旦不满足,我们就知道下一个节点的位置,并把它赋予pNode继续遍历;

        其中需要注意的是,当我们的pPre是NULL的时候,证明重复的是头结点,还要改变头结点的位置,所以pHead需要设置成ListNode**的类型;

        只有在想清楚这些东西的时候,我们才能下笔写,否则改来改去会扰乱自己的思路;

         当然,最后不要忘记“输入参数的安全检查”^_^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值