- 單向鏈表的基本運算
- 單向鏈表插入
- 插入:即實現
Insrt(L,x,I)
,將x插入表中結點ai之前的情(即前插)
- 插入:即實現
- 單向鏈表插入
第一步:先將q的後繼變爲ai的前驅
第二步:將ai-1的後繼變爲q的前驅
-
**算法思路:**調用算法Getlist(H,i-1)獲取結點ai-1的指針P(ai之前驅),然後申請一個q結點,存入x,並將其插入p結點之後,插入時的指針變換如圖所示:
-
插入:即實現Insert(L,x,i),將插入表結點ai之前的情況(即前插)
void Linsert(link H ,datatype x,int i){
link p, q;
if(==0) p=H;
else p=Getlist(H,i-H)//取結點ai+1的指針
if(p==NULL) ERROR(i);//參數i出錯
else{
q=(link)malloc(sizeof(linknode));//申請插入結點
q->data=x;//存入數據
q->next=p->next;//插入新結點
p->next=q;
}