C語言 鏈表結(jié)點(diǎn)的插入操作
鏈表的插入操作就是根據(jù)一定條件將新產(chǎn)生的結(jié)點(diǎn)插入到已經(jīng)存在的鏈表中。
例如假設(shè)一個(gè)鏈表是有序的,現(xiàn)將數(shù)字11插入到鏈表中,使鏈表仍有序。鏈表結(jié)點(diǎn)的插入操作分為如下幾步:
①申請一個(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)插入到指定的位置。
插入結(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;
}
點(diǎn)擊加載更多評論>>