函數(shù)有兩個形參,head為指向鏈表第一結(jié)點的指針變量,num刪結(jié)點的學(xué)號。 首先判斷鏈表是否為空,為空則不
可能有被刪結(jié)點。若不為空,則使 pb指針指向鏈表的第一個結(jié)點。進入while語句后逐個查找被刪結(jié)點。找到被刪結(jié)
點之后再看是否為第一結(jié)點,若是則使 head指向第二結(jié)點(即把第一結(jié)點從鏈中刪去),否則使被刪結(jié)點的前一結(jié)點(pf
所指)指向被刪結(jié)點的后一結(jié)點(被刪結(jié)點的指針域所指)。如若循環(huán)結(jié)束未找到要刪的結(jié)點, 則輸出“末找到”的提
示信息。最后返回 head值。
[例7.13]寫一個函數(shù),在鏈表中指定位置插入一個結(jié)點。在一個鏈表的指定位置插入結(jié)點, 要求鏈表本身必須是已
按某種規(guī)律排好序的。例如,在學(xué)生數(shù)據(jù)鏈表中, 要求學(xué)號順序插入一個結(jié)點。設(shè)被插結(jié)點的指針為pi?稍谌N
不同情況下插入。
1. 原表是空表,只需使head指向被插結(jié)點即可。見圖7.7(a)
2. 被插結(jié)點值最小,應(yīng)插入第一結(jié)點之前。這種情況下使head指向被插結(jié)點,被插結(jié)點的指針域指向原來的第一結(jié)
點則可。即:pi->next=pb;
head=pi; 見圖 7.7(b)
3. 在其它位置插入,見圖7.7(c)。這種情況下,使插入位置的前一結(jié)點的指針域指向被插結(jié)點,使被插結(jié)點的指針
域指向插入位置的后一結(jié)點。即為:pi->next=pb;pf->next=pi;
4. 在表末插入,見圖7.7(d)。這種情況下使原表末結(jié)點指針域指向被插結(jié)點,被插結(jié)點指針域置為NULL。即:
pb->next=pi;
pi->next=NULL; TYPE * insert(TYPE * head,TYPE *pi)
{
TYPE *pf,*pb;
pb=head;
if(head==NULL) /*空表插入*/
(head=pi;
pi->next=NULL;}
else
{
while((pi->num>pb->num)&&(pb->next!=NULL))
{pf=pb;
pb=pb->next; }/*找插入位置*/
if(pi->num<=pb->num)
{if(head==pb)head=pi;/*在第一結(jié)點之前插入*/
else pf->next=pi;/*在其它位置插入*/
pi->next=pb; }
else
{pb->next=pi;
pi->next=NULL;} /*在表末插入*/
}
return head;}
2015年全國職稱計算機考試教材(2007模 .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 | |
全國職稱計算機考試速成過關(guān)系列套裝:W .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |