题解 | #删除链表的节点#

删除链表的节点

http://www.nowcoder.com/practice/f9f78ca89ad643c99701a7142bd59f5d

 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @param val int整型 
     * @return ListNode类
     */
    ListNode* deleteNode(ListNode* head, int val) {
        // write code here
        //反正都要遍历查找,所以此题是绝对做不到O(1)的,故本题采用双指针法
        ListNode * pFather = head;
        ListNode * pToBeDeleted = head;
        
        //只要没有找到要删除的节点就一直往下走,如果找到表尾还没找到则打破循环
        while(pToBeDeleted->val != val){
            pFather = pToBeDeleted;
            pToBeDeleted = pToBeDeleted->next;
            if(pToBeDeleted == nullptr) break;
        }
        
        if(pToBeDeleted == head){                    //如果第一个节点就是要删除的节点,需要特殊处理
            head = pToBeDeleted->next;
        }else if(pToBeDeleted != nullptr){           //如果不是第一个节点且有这个节点时
            pFather->next = pToBeDeleted->next;
        }else{
            cerr << "数组中没有这个值" << endl;       //如果上面两种情况都不是则输出错误
        }
        
        return head;
    }
};
全部评论

相关推荐

人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务