热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

203.移除链表元素(添加虚拟头节点)

解题思路1.通常要删除一个节点,我们需要得到它前面的一个节点,因此当要删除的节点是第一个节点时就要单独处理,特别是这里还有可能多次删除第

解题思路

1.通常要删除一个节点,我们需要得到它前面的一个节点,因此当要删除的节点是第一个节点时就要单独处理,特别是这里还有可能多次删除第一个节点。这种情况下可以在链表前人为添加一个节点,以其为开始就不用考虑上述问题了,即设立新的存储指针p来替换掉head,之后要返回操作后的链表时直接返回p->next即可。
2.指针顺着链表操作时while循环中的判断条件不一定是操作指针本身,其应当为每次操作的对象,如这里每次操作的就是q->next。

题目

/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* removeElements(struct ListNode* head, int val){struct ListNode *p = (struct ListNode *)malloc(sizeof(struct ListNode));struct ListNode *q = p;q->next = head;while(q->next){if(q->next->val == val){struct ListNode *r = q->next;q->next = r->next;free(r);r = NULL;}elseq = q->next;}return p->next;
}


推荐阅读
author-avatar
司徒琪瑶_186
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有