链表删除指定元素算法
我们只需要分情况理清楚就很简单
在算法分析的时候记清楚自己的思路是最重要的
只要链表里有一个元素与给定的元素不相同 第一次与给定元素不相同的节点就为头节点
1:改变头节点
2:不改变头节点
List deleList(List p,int val){
List r=p;
List head=NULL;
while(r ){
-------if(r->data==val){ //删除指定元素我分为两种情况 删除了头节点和 没有删除头节点
-------------if(p->data == val){//只要头节点所在的元素与val相等再回执行这条语句
-------------p=p->next; //第一个与val不相等的节点为头节点 聊表重要的就是头指针
-------------free( r);
-------------r=p;
-------------}
------else{
-------------head->next=r->next;
-------------free(r );
-------------r=head->next; //
-------------}
}
-------else{
-------------head=r; //记录要删除节点的头一个节点
-------------r=r->next;
-------------}
}
return p;
}