编写算法函数linklist delallx(linklist head, int x),删除带头结点单链表head中所有值为x的结点。

来源:互联网 发布:配置数据库镜像 编辑:程序博客网 时间:2024/06/01 09:15
/*
编写算法函数linklist delallx(linklist head, int x),删除带头结点单链表head中所有值为x的结点。

*/

linklist delallx(linklist head,int x)
{
   linklist p=head->next,q=NULL;
   while(p!=NULL)
   {
       while(p->info!=x){q=p;p=p->next;}      //查找x
       if(q==NULL)                                        //要删除的x就在第一个
       {
        head->next=p->next;
       }
       else                                                         
       {
           q->next=p->next;
       }
       p=p->next;
   }
   free(p);                                                //释放p结点
   return head;
}
int main()
{   datatype x;
    linklist head;
    head=creatbyqueue(); /*尾插入法建立带头结点的单链表*/
    print(head);
    printf("请输入要删除的值:");
    scanf("%d",&x);
    head=delallx(head,x);
    print(head);
    delList(head);
    return 0;
}

阅读全文
0 0
原创粉丝点击