Linus的二级指针思想
2013-01-28 16:16
211 查看
void DelNode(Node head,int num) { Node h = head->next; Node prev = head; for (;h->next;) { printf("prev=%p curr=%p\n",prev->next,h->next); if (h->num == num) { prev->next = h->next; free(h); break; } h=h->next; prev=prev->next; } return ; }
上面的方法是学校里交授的方法,即需要始终保存当前节点的前一个节点,因为删除操作时,你需要前一个节点的next域。但是,Linus认为这样做是不理解指针的做法。
如果开发者能够理解指针,只需要使用“指向该条目的指针”并初始化list_head,然后贯穿列表,此时无需使用任何条件语句即可删除该条目。即使用二级指针。
void DelNode1(Node* head,int num) { Node *curr = head; for(;*curr;) { Node rmp = *curr; printf("curr=%p *curr=%p rmp=%p num=%d\n",curr,*curr,rmp,rmp->num); if (rmp->num == num) { *curr = rmp->next; free(rmp); break; } curr=&rmp->next;//二级指针,curr存储的是指向下一个节点的地址,即上一个节点地址 } return ; }
相关文章推荐
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- linus大神的二级指针
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- 【转】Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- 剑指offer面试题13扩展------Linus:利用二级指针删除单向链表
- 转:Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表
- Linus:利用二级指针删除单向链表 转自酷壳 – CoolShell.cn
- Linus:利用二级指针删除单向链表