位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

C語(yǔ)言 鏈表的刪除操作

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-02

當(dāng)需要?jiǎng)h除鏈表中某一結(jié)點(diǎn),只需將該結(jié)點(diǎn)的前一結(jié)點(diǎn)的指針域指向該結(jié)點(diǎn)的后一結(jié)點(diǎn),之后釋放該結(jié)點(diǎn)即可,過(guò)程如圖所示。

image.png

1.定義指針p=h,指針q=p->next。

2.如果q->data==x,則:

    ?讓p指針?biāo)赶蚪Y(jié)點(diǎn)的next指向q->next,將q結(jié)點(diǎn)懸空。

    ?釋放q結(jié)點(diǎn)。

    ?讓q=p->next,以便搜索下一個(gè)符合要求的結(jié)點(diǎn);

3.如果q->data!=x,則令p、q指針向后移,具體為:

    p=q;

    q=q->next ;

刪除結(jié)點(diǎn)的函數(shù)del()具體程序代碼如下:

void del(SLIST *h,int x)

{

    SLIST *p.*q; 

    p=h;q=p->next;

    while(q!=NULL)

    {

        if (q->data==x)

        {

            p->next-Bq->next; 

            free(q); 

            q=p->next ;

        }

        else

        {

            p=q;

            q=q->next ;

        }

    }

}


繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部