美文网首页
链表的删除c语言

链表的删除c语言

作者: macFlyang | 来源:发表于2017-11-03 02:32 被阅读0次

    struct Node*Dell(structNode*pHead,int num){

    struct Node* p1;//保存当前节点地址。

    struct Node*p2;//p2保存检查过的节点地址

    if(pHead==NULL){

    printf("是空链表--程序终止\n");

    exit(-1);

    }

    //要删的节点;

    p1=pHead;

    while(p1->data!=num &&p1->pNext!=NULL) {

    p2=p1;

    p1=p1->pNext;

    }

    if(p1->data==num){

    //找到了要删除的节点;

    if(p1==pHead){//如果要删除的节点是第一个节点

    pHead=p1->pNext;//此时头指针指向了第一个节点的后一个节点,也就是第二个节点,这样第一个节点就不在链表中啦

    }else{

    p2->pNext= p1->pNext;  //此句最为重要了--删除以后节点的指向发生了改变2->next=1->next;

    //p1->pNext=p2->pNext;这样

    }

    free(p1);p1=NULL;

    printf("删除%d 成功\n",num);

    len-=1;

    }else{

    printf("\n %d 没有找到要删除的数\n",num);

    }

    return pHead;

    }

    intmain(intargc,constchar* argv[]) {

    structNode*pHead;

    pHead=Del(pHead, 12);//删除链表

    pRintf(pHead);//打印链表

    return0;

    }

    相关文章

      网友评论

          本文标题:链表的删除c语言

          本文链接:https://www.haomeiwen.com/subject/ffqclttx.html