- 試題排行
- 最新熱點(diǎn)
- 最新推薦
2
3
4
5
6
7
8
9
10
2008年上半年軟考軟件設(shè)計(jì)師考試試題(上午)
2008年上半年軟考網(wǎng)絡(luò)工程師考試試題(下午)
2008年上半年軟考軟件設(shè)計(jì)師考試試題(下午)
2008年上半年軟件水平考試程序員考試試題(上
2008年下半年軟考網(wǎng)絡(luò)工程師預(yù)測(cè)試題及答案
2008年上半年軟件水平考試程序員考試試題(下
2008下半年軟件水平考試軟件設(shè)計(jì)師押題試卷
08年上半年軟考數(shù)據(jù)庫(kù)系統(tǒng)工程師考試試題(上
2008下半年軟件水平考試程序員模擬試題及答
1、理解題目:
已知條件為兩個(gè)鏈表La和Lb,最后得到的結(jié)果也是兩個(gè)鏈表,只不過(guò)是La中的部分結(jié)點(diǎn)移動(dòng)到Lb中,因此,本問(wèn)題主要是解決是怎么移動(dòng)的。
2、算法:
在題目中沒(méi)有給出結(jié)點(diǎn)移動(dòng)的算法,我們先可以結(jié)合實(shí)例自己設(shè)計(jì)一個(gè)算法,然后看是不是與程序中的算法一致。如果不是,則再找算法。
實(shí)例:
如圖所示,如果我們找到實(shí)線的指針,它們分別指向La中的Key1結(jié)點(diǎn)(p指針)、Key1的前一個(gè)結(jié)點(diǎn)(q指針)、Aj(從Key1結(jié)點(diǎn)開(kāi)始的第len個(gè)結(jié)點(diǎn),r指針)和Lb中的Key2的前一個(gè)結(jié)點(diǎn)(s指針),則根據(jù)鏈表操作,用圖中的虛線指針連接,我們就可以把La中從Key1結(jié)點(diǎn)開(kāi)始的共len個(gè)結(jié)點(diǎn)全部移動(dòng)到Lb鏈表中。因此算法大致如下:
。1)找到p和q指針;
。2)找到r指針;
。3)找到s指針;
(4)r->next=s->next(即把Aj結(jié)點(diǎn)連接到K2結(jié)點(diǎn)之前);
。5)s->next=q(即把K1結(jié)點(diǎn)連接到原來(lái)Lb中K2結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn)的后面);
注意:經(jīng)過(guò)(4)、(5)兩步操作,即實(shí)現(xiàn)了移動(dòng)操作。
。6)要注意的是現(xiàn)在La鏈表已經(jīng)斷開(kāi),也必須重新連接上,故要:
但是注意一下程序,就會(huì)發(fā)現(xiàn)里面有很多判斷,主要是看判斷是否可以移動(dòng)。我們考慮后(也可以看程序)發(fā)現(xiàn),在以下幾種情況下,操作不能進(jìn)行:
。1)La或Lb是空鏈表;
。2)len表示個(gè)數(shù)的值,因此不能不大于0;
。3)La中不存在Key1的結(jié)點(diǎn);
。4)La中從Key1結(jié)點(diǎn)開(kāi)始的結(jié)點(diǎn)個(gè)數(shù)小于len個(gè);
(4)Lb中不存在Key2的結(jié)點(diǎn);
3、現(xiàn)在主要是看程序結(jié)構(gòu)是不是和我們自己考慮的算法符合。
程序段(5)~(8):其中有p指針在向后移動(dòng),一直到Key1為止,因此,它們的功能就是找到指向Key1結(jié)點(diǎn)的指針;同時(shí),另有一個(gè)指針prep一直在p的后面,因此它就是指向Key1的前一個(gè)結(jié)點(diǎn)的指針。
程序段(10)~(13):其中有一個(gè)k變量,每次循環(huán)后增加1,因此它是一個(gè)計(jì)數(shù)器。通過(guò)計(jì)數(shù)len次,就可以找到從Key1結(jié)點(diǎn)開(kāi)始的第len個(gè)結(jié)點(diǎn)。這時(shí),應(yīng)該有一個(gè)指針(q)同時(shí)移動(dòng),使得這個(gè)指針就是指向第len個(gè)結(jié)點(diǎn)的指針。
程序段(15)~(18):其中有s指針在向后移動(dòng),一直到Key2為止,因此,它們的功能就是找到指向Key2的前一個(gè)結(jié)點(diǎn)的指針。
程序段(20)~(22):就是移動(dòng)La中的結(jié)點(diǎn)到Lb,并把La中斷開(kāi)的鏈表連接。從上述的分析發(fā)現(xiàn),程序結(jié)構(gòu)是和我們自己考慮的算法一致的。
4、考慮細(xì)節(jié),并填空。
(1)我們的目的是找指向第len個(gè)結(jié)點(diǎn)的指針,找到后循環(huán)應(yīng)該結(jié)束,因此,要填k
。3)這一段程序的功能是找到指向Key2的前一個(gè)結(jié)點(diǎn)的指針。其中s指針是指向Key2結(jié)點(diǎn)的,而pres指針跟在s后面。但是pres指針缺少初值,因此,這兒應(yīng)該給pres賦值。故,應(yīng)填:pres=Lb。
。4)程序塊(20)、(21)、(22)的功能是移動(dòng)La中的結(jié)點(diǎn)到Lb,并把La中斷開(kāi)的鏈表連接。根據(jù)鏈表操作的方法,顯然(20)是把La中斷開(kāi)的鏈表連接,因此,(4)應(yīng)該填:prep->next;而(21)、(22)是移動(dòng)La中的結(jié)點(diǎn)到Lb,因此,(5)應(yīng)該填:pres->next。
- 推薦給朋友
- 收藏此頁(yè)
·網(wǎng)絡(luò)工程師資料:網(wǎng)絡(luò)體系結(jié)構(gòu)-軟考網(wǎng)絡(luò)類題解 (2008-4-25 14:33:38)
·計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)及優(yōu)缺點(diǎn)分析 (2008-2-22 14:04:32)
·網(wǎng)絡(luò)工程師必知:靜態(tài)路由協(xié)議配置方法 (2008-2-22 14:03:39)
·計(jì)算機(jī)網(wǎng)絡(luò)尼奎斯特 香農(nóng)公式例題解析 (2008-2-22 14:02:35)
·軟考復(fù)習(xí):因特網(wǎng)IP的分類、尋址規(guī)則及子網(wǎng)掩碼 (2008-2-22 13:57:21)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。