數(shù)據(jù)結(jié)構(gòu)
鏈表
筆試題:設(shè)計(jì)一個算法刪除單鏈表L(有頭節(jié)點(diǎn))中的一個最小值結(jié)點(diǎn)。文章來源:http://www.zghlxwxcb.cn/news/detail-855667.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-855667.html
/*****************************************************************
*
* file name : linkedlist.c
* author : cnzycwp@126.com
* data : 2024/04/22
* function : 刪除單鏈表中的一個最小值結(jié)點(diǎn)
* note : None
*
* CopyRight (c) 2024 cnzycwp@126.com All Right Reseverd
*
* ****************************************************************/
/*****************************************************************
*
* func name : LList_Del
* function : 刪除單鏈表中的一個最小值結(jié)點(diǎn)
* retval : bool
* note : None
* author : cnzycwp@126.com
* data : 2024/04/22
*
* ****************************************************************/
bool LList_Del(LList_t *L)
{
//創(chuàng)建新的最小值結(jié)點(diǎn)和最小值前一個結(jié)點(diǎn)的指針,并對新指針進(jìn)行初始化
LList_t *Lmin = L;
LList_t *Lprev = NULL;
//對鏈表的頭文件的地址進(jìn)行備份
LList_t *PL = L;
//判斷首結(jié)點(diǎn)的指針域是否為NULL,如果為NULL,則退出循環(huán)
while(PL->next)
{
//判斷首結(jié)點(diǎn)的數(shù)據(jù)域是否小于最小值結(jié)點(diǎn)的數(shù)據(jù)域
if (PL->next->data < Lmin->next->data)
{
//若首結(jié)點(diǎn)的數(shù)據(jù)域小于最小值結(jié)點(diǎn)的數(shù)據(jù)域,則把首結(jié)點(diǎn)的指針域賦值給最小值結(jié)點(diǎn),頭結(jié)點(diǎn)的指針域賦值給最小值前一個結(jié)點(diǎn)
Lmin = PL->next;
Lprev = PL;
}
//把頭結(jié)點(diǎn)的直接后繼作為新的頭結(jié)點(diǎn)
PL = PL->next;
}
//判斷最小值結(jié)點(diǎn)指針域是否等于NULL
if (NULL != Lmin->next)
{
//若最小值結(jié)點(diǎn)指針域不等于NULL,則把最小值的指針域賦值給最小值前一個結(jié)點(diǎn)的指針域
Lprev->next = Lmin->next;
//最小值結(jié)點(diǎn)的指針域指向NULL
Lmin->next = NULL;
free(Lmin);
return true;
}
//最小值前一個結(jié)點(diǎn)的指針域指向NULL
Lprev->next = NULL;
free(Lmin);
return true;
}
到了這里,關(guān)于設(shè)計(jì)一個算法刪除單鏈表L(有頭節(jié)點(diǎn))中的一個最小值結(jié)點(diǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!