习题11-8 单链表结点删除 (20 分)

和习题11-7一样的思路,不过这样做的话被删掉的结点还存在内存里。。。
与其说是删除,更确切地说是跳过(捂脸)

struct ListNode *deletem( struct ListNode *L, int m )
{
     
    struct ListNode *p=NULL, *q=NULL,*head=L;
    for(q,p=L;p;q=p,p=p->next){
     
        if(p->data==m){
     
            if(q){
     
                q->next=p->next;
                if(q->data==m){
     
                    head=q->next;
                }
                p=q;
            }else{
     
                head=p->next;
            }
        }
    }
    return head;
}

不过不管怎么说,116道题算是磕磕绊绊刷完了。
在此我想告诉自己,不管什么事,只要你想,你就能做到,加油吧未来。

你可能感兴趣的:(链表)