print(head);
printf("Input the inserted number and age: ");
pnum=(TYPE *)malloc(LEN);
scanf("%d%d",&pnum->num,&pnum->age);
head=insert(head,pnum);
print(head);
}
本例中,print函數(shù)用于輸出鏈表中各個(gè)結(jié)點(diǎn)數(shù)據(jù)域值。函數(shù)的形參head的初值指向鏈表第一個(gè)結(jié)點(diǎn)。在while語(yǔ)句中,輸出結(jié)點(diǎn)值后,head值被改變,指向下一結(jié)點(diǎn)。若保留頭指針head, 則應(yīng)另設(shè)一個(gè)指針變量,把head值賦予它,再用它來(lái)替代head。在main函數(shù)中,n為建立結(jié)點(diǎn)的數(shù)目, num為待刪結(jié)點(diǎn)的數(shù)據(jù)域值;head為指向鏈表的頭指針,pnum為指向待插結(jié)點(diǎn)的指針。 main函數(shù)中各行的意義是:
第六行輸入所建鏈表的結(jié)點(diǎn)數(shù);
第七行調(diào)creat函數(shù)建立鏈表并把頭指針?lè)祷亟ohead;
第八行調(diào)print函數(shù)輸出鏈表;
第十行輸入待刪結(jié)點(diǎn)的學(xué)號(hào);
第十一行調(diào)delete函數(shù)刪除一個(gè)結(jié)點(diǎn);
第十二行調(diào)print函數(shù)輸出鏈表;
第十四行調(diào)malloc函數(shù)分配一個(gè)結(jié)點(diǎn)的內(nèi)存空間, 并把其地址賦予pnum;
第十五行輸入待插入結(jié)點(diǎn)的數(shù)據(jù)域值;
第十六行調(diào)insert函數(shù)插入pnum所指的結(jié)點(diǎn);
第十七行再次調(diào)print函數(shù)輸出鏈表。
從運(yùn)行結(jié)果看,首先建立起3個(gè)結(jié)點(diǎn)的鏈表,并輸出其值;再刪103號(hào)結(jié)點(diǎn),只剩下105,108號(hào)結(jié)點(diǎn);又輸入106號(hào)結(jié)點(diǎn)數(shù)據(jù), 插入后鏈表中的結(jié)點(diǎn)為105,106,108。聯(lián)合“聯(lián)合”也是一種構(gòu)造類型的數(shù)據(jù)結(jié)構(gòu)。 在一個(gè)“聯(lián)合”內(nèi)可以定義多種不同的數(shù)據(jù)類型, 一個(gè)被說(shuō)明為該“聯(lián)合”類型的變量中,允許裝入該“聯(lián)合”所定義的任何一種數(shù)據(jù)。 這在前面的各種數(shù)據(jù)類型中都是辦不到的。例如, 定義為整型的變量只能裝入整型數(shù)據(jù),定義為實(shí)型的變量只能賦予實(shí)型數(shù)據(jù)。
在實(shí)際問(wèn)題中有很多這樣的例子。 例如在學(xué)校的教師和學(xué)生中填寫(xiě)以下表格: 姓 名 年 齡 職 業(yè) 單位 “職業(yè)”一項(xiàng)可分為“教師”和“學(xué)生”兩類。 對(duì)“單位”一項(xiàng)學(xué)生應(yīng)填入班級(jí)編號(hào),教師應(yīng)填入某系某教研室。 班級(jí)可用整型量表示,教研室只能用字符類型。 要求把這兩種類型不同的數(shù)據(jù)都填入“單位”這個(gè)變量中, 就必須把“單位”定義為包含整型和字符型數(shù)組這兩種類型的“聯(lián)合”。
“聯(lián)合”與“結(jié)構(gòu)”有一些相似之處。但兩者有本質(zhì)上的不同。在結(jié)構(gòu)中各成員有各自的內(nèi)存空間, 一個(gè)結(jié)構(gòu)變量的總長(zhǎng)度是各成員長(zhǎng)度之和。而在“聯(lián)合”中,各成員共享一段內(nèi)存空間, 一個(gè)聯(lián)合變量的長(zhǎng)度等于各成員中最長(zhǎng)的長(zhǎng)度。應(yīng)該說(shuō)明的是, 這里所謂的共享不是指把多個(gè)成員同時(shí)裝入一個(gè)聯(lián)合變量?jī)?nèi), 而是指該聯(lián)合變量可被賦予任一成員值,但每次只能賦一種值, 賦入新值則沖去舊值。如前面介紹的“單位”變量, 如定義為一個(gè)可裝入“班級(jí)”或“教研室”的聯(lián)合后,就允許賦予整型值(班級(jí))或字符串(教研室)。要么賦予整型值,要么賦予字符串,不能把兩者同時(shí)賦予它。聯(lián)合類型的定義和聯(lián)合變量的說(shuō)明一個(gè)聯(lián)合類型必須經(jīng)過(guò)定義之后, 才能把變量說(shuō)明為該聯(lián)合類型。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |