位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 鏈表結(jié)點(diǎn)的插入操作

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

鏈表的插入操作就是根據(jù)一定條件將新產(chǎn)生的結(jié)點(diǎn)插入到已經(jīng)存在的鏈表中。

例如假設(shè)一個(gè)鏈表是有序的,現(xiàn)將數(shù)字11插入到鏈表中,使鏈表仍有序。鏈表結(jié)點(diǎn)的插入操作分為如下幾步:

    ①申請(qǐng)一個(gè)新結(jié)點(diǎn),存放需要插入的數(shù)字。

    ②查找該結(jié)點(diǎn)應(yīng)該存放的位置。從第一個(gè)結(jié)點(diǎn)開始查找新結(jié)點(diǎn)應(yīng)該插入的位置,因?yàn)殒湵硎怯行虼娣诺?,所以可以用新結(jié)點(diǎn)的值依次和鏈表中的每個(gè)結(jié)點(diǎn)的數(shù)據(jù)域比較,如果新結(jié)點(diǎn)的值大,指針后移到下一個(gè)結(jié)點(diǎn),繼續(xù)比較,直到找到一個(gè)結(jié)點(diǎn)的值比新結(jié)點(diǎn)的值小,那么該結(jié)點(diǎn)的前面就是新結(jié)點(diǎn)應(yīng)插 入的位置。具體過程如圖所示。

    ③將新結(jié)點(diǎn)插入到指定的位置。

image.png

插入結(jié)點(diǎn)函數(shù)insert()程序代碼如下:

void insert(SLIST *h,int x)

{

    int i;

    SLIST  *p,*q,*t;

    p=h;

    q=(SLIST *)malloc(sizeof(SLIST)); 

    q->data ==x;


while(p!=NULL)

{

    if(x>p->data ) 

    {

        t=p;

        p=p->next;


    }

    else

        break;

}

q->next =p;

t->next =q;

}


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

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