下面我們來解決輸入問題,鏈表的實(shí)現(xiàn)我們是通過循環(huán)輸入來實(shí)現(xiàn)的,既然是循環(huán)我們就一定得考慮終止循環(huán)的條件,避免死循環(huán)和無效循環(huán)的發(fā)生。
在create()函數(shù)內(nèi)部我們先寫成這樣:
test *create()
{
test *ls;//節(jié)點(diǎn)指針
test *le;//鏈尾指針
ls = new test;//把ls指向動(dòng)態(tài)開辟的堆內(nèi)存地址
cin>>ls->name>>ls->socre;
head=NULL;//進(jìn)入的時(shí)候先不設(shè)置head指針指向任何地址,因?yàn)椴恢朗欠褚簧蟻砭洼斎雗ull跳出程序
le=ls;//把鏈尾指針設(shè)置成剛剛動(dòng)態(tài)開辟的堆內(nèi)存地址,用于等下設(shè)置le->next,也就是下一個(gè)節(jié)點(diǎn)的位置
le->next=NULL;//把鏈尾指針的next設(shè)置為空,因?yàn)椴还苋绾窝h(huán)總是要結(jié)束的,設(shè)置為空才能夠在循環(huán)顯鏈表的時(shí)候不至于死循環(huán)
delete ls;//當(dāng)結(jié)束的時(shí)候最后一個(gè)動(dòng)態(tài)開辟的內(nèi)存是無效的,所以必須清除掉
return head;//返回鏈?zhǔn)字羔?
}
在循環(huán)創(chuàng)建之前我們必須考慮一個(gè)都不輸入的情況。
程序一單進(jìn)入create函數(shù)我們首先必然要?jiǎng)?chuàng)建一個(gè)節(jié)點(diǎn),我們先創(chuàng)建一個(gè)節(jié)點(diǎn)指針,后把者個(gè)節(jié)點(diǎn)指針指向到動(dòng)態(tài)開辟的test類型的動(dòng)態(tài)內(nèi)存地址位置上。
test *ls;
ls = new test;
程序既然是循環(huán)輸入,而結(jié)構(gòu)成員test *next又是用來存儲(chǔ)下一個(gè)接點(diǎn)的內(nèi)存地址的,每次循環(huán)我們又要?jiǎng)討B(tài)創(chuàng)建一個(gè)新的內(nèi)存空間,所以我們必須要有一個(gè)指針來存儲(chǔ)上一次循環(huán)動(dòng)態(tài)開辟的內(nèi)存地址,于是就有了
test *le;
接下來在進(jìn)入循環(huán)前我們要?jiǎng)?chuàng)建鏈表的第一個(gè)節(jié)點(diǎn),第一個(gè)節(jié)點(diǎn)必然是在循環(huán)外創(chuàng)建,于是就有了
cin>>ls->name>>ls->socre;
程序執(zhí)行者的情況是位置的,所以我們必然要考慮,一上來就不想繼續(xù)運(yùn)行程序的情況,所以我們一開始先把head引導(dǎo)指針設(shè)置為不指向任何地址也就是
head=NULL;
為了符合le也就是鏈尾指針的設(shè)計(jì)思路,我們?cè)谘h(huán)前一定要保存剛剛動(dòng)態(tài)開辟的內(nèi)存地址,好在下一次循環(huán)的時(shí)候設(shè)置上一個(gè)節(jié)點(diǎn)中的next成員指向,于是我們便有了:
le=ls;
為了實(shí)現(xiàn)循環(huán)輸入我們又了下面的代碼:
while(strcmp(ls->name,"null")!=0)
{
if(head==NULL)
{
head=ls;
}
else
{
le->next=ls;
}
le=ls;
ls=new test;
cin>>ls->name>>ls->socre;
}
程序是循環(huán)必然要有終止循環(huán)的條件,所以我們的循環(huán)條件是:
while(strcmp(ls->name,"null")!=0)
輸入的名字是null的時(shí)候就停止循環(huán)。
希望與更多計(jì)算機(jī)等級(jí)考試的網(wǎng)友交流,請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)考試論壇
更多信息請(qǐng)?jiān)L問:考試吧計(jì)算機(jī)等級(jí)考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |