赞
踩
- prev->next = pcur->next; //prev指针指向pcur的下一个结点
- struct ListNode* del = pcur; //用临时变量del来保存pcur结点
- free(del); //将del结点释放,pcur现在是野指针
- pcur = prev->next; //pcur指向prev结点的next指针
- prev->next = pcur->next; //prev结点的next指针指向pcur的下一个结点
- struct ListNode* del = pcur; //用临时变量del保存pcur结点
- pcur = pcur->next; //pcur结点指向下一个结点
- free(del); //释放del结点,对pcur没有造成影响
-
- typedef struct ListNode ListNode;
- struct ListNode* removeElements(struct ListNode* head, int val) {
- //定义一个哨兵结点,便于后续执行删除操作
- ListNode* node =(ListNode*) malloc(sizeof(ListNode));
- //哨兵结点的next指向头结点
- node->next = head;
-
- //prev指向哨兵结点
- ListNode* prev = node;
- //pcur指向头结点,依次遍历链表中每一个结点
- ListNode* pcur = head;
-
- while(pcur!=NULL){
- //从头结点开始,一直到NULL结束
- if(pcur->val == val){
- //结点的值为val,执行删除操作
- prev->next = pcur->next; //prev指向pcur的下一个结点
- ListNode* del = pcur; //用临时变量del将pcur保存
- pcur = pcur->next; //pcur指向下一个结点
- free(del); //释放del结点
- }else{
- //结点的值不是val
- prev = pcur;
- pcur = pcur->next;
- }
- }
- head = node->next; //头结点是哨兵结点的下一个结点
- free(node); //释放哨兵结点
- return head; //返回头结点
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。