数据结构基础_高仿remove(value)方法

来源:互联网 发布:推倒女神的体验知乎 编辑:程序博客网 时间:2024/06/15 00:31
#include<stdio.h>#include<stdlib.h>typedef struct Node {int data;struct Node * next;}Node,*ListNode;void removeNode(Node ** pHead,int value ){if(NULL == *pHead || NULL == pHead){return;}Node *pToBeDeleted = NULL;if((*pHead) ->data == value){pToBeDeleted = *pHead;*pHead = *pHead ->next;}else{Node p = *pHead;while(p->next->data != value && p->next !=NULL)p =p->next;if(p->next!=NULL){pToBeDeleted = p->next;p->next =p->next->next;}}if(pToBeDeleted != NULL){free(pToBeDeleted);pToBeDeleted = NULL;}}


/*
测试用例:
1 当链表为空的时候.
2 当链表只有一个结点的时候.
3 当链表有多个结点的时候(正常情况下)
4 删除的结点是最后一个结点.
5 删除的结点是倒数第2个结点。
6 删除的结点是第一个结点。
7 找不到被删除的结点。


*/