1.(1997年)
本題要求設(shè)計(jì)一個學(xué)生試卷成績輸入、查詢和成績單輸出系統(tǒng)(簡稱SRS)的數(shù)據(jù)結(jié)構(gòu)和算法要點(diǎn)。問題描述如下:
要輸入到SRS系統(tǒng)中的每一份試卷成績反映一個學(xué)生選修一門課程的考試結(jié)果,它包括以下數(shù)據(jù)項(xiàng):學(xué)號、姓名、課程名、成績。由于實(shí)行了靈活的選課制度,所以每個學(xué)生選修多少門課程,選修哪些課程都可以不同。要輸入的多份試卷成績并未按任何數(shù)據(jù)項(xiàng)排列順序,它們以任意的順序被輸入到系統(tǒng)中來。
SRS系統(tǒng)要具有以下功能:①試卷成績插入,將試卷成績逐個插入到SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)中。②學(xué)生成績查詢,給出學(xué)號查找該學(xué)生所選修的各門課程的考試成績。③成績單輸出,按學(xué)號遞增的順序依次輸出所有學(xué)生的學(xué)號、姓名,及其所選修的各門課程的課程名和成績。(為簡單起見,假設(shè)上述所有工作都在計(jì)算機(jī)內(nèi)存中進(jìn)行。)
請?jiān)O(shè)計(jì)SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和算法要點(diǎn),使上述三項(xiàng)操作都有較高的執(zhí)行效率。從以下方面闡述你的設(shè)計(jì):
(1)SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(15分)
①數(shù)據(jù)結(jié)構(gòu)的Pascal語句描述
②數(shù)據(jù)結(jié)構(gòu)的示意圖
③數(shù)據(jù)結(jié)構(gòu)的簡單文字說明
(2)SRS系統(tǒng)的算法要點(diǎn)(10分)
(只要簡單的文字說明,不必寫出Pascal程序)
①試卷成績插入
②學(xué)生成績查詢
③成績單輸出
(3)簡單陳述你的上述設(shè)計(jì)的理由(5分)
答案:
本題可有多種不同的設(shè)計(jì)方案,下面給出其中一個較好的方案。
(1)數(shù)據(jù)結(jié)構(gòu)(15分,其中對三種操作的有效支持各4分,敘述的條理性3分。)
①數(shù)據(jù)結(jié)構(gòu)的Pascal語句描述
TYPEpptr=↑pnode;
pnode=RECORD
cname:string;
score:0..100;
next:pptr
END;
sptr=↑pnode;
snode=RECORD
sno:integer;
sname:string;
llink,rlink:sptr;
plink:pptr
END;
VARt:sptr;
②數(shù)據(jù)結(jié)構(gòu)的示意圖
9508027Liu٨٨
OS72
OS60
9408023Fang٨٨
9508091Chen ٨
9508010Li
DS85
DB66٨
SE89
AI92٨
DS90
OS95
t
③數(shù)據(jù)結(jié)構(gòu)的簡單文字說明 每個學(xué)生結(jié)點(diǎn)包含學(xué)生的學(xué)號和姓名,所有學(xué)生結(jié)點(diǎn)組織成一棵二叉排序樹,用link-rlink法存儲。
每份試卷成績作為一個鏈表結(jié)點(diǎn),包含課程名和成績,每個學(xué)生的所有試卷成績結(jié)點(diǎn)鏈接成一個單鏈表,并且二叉排序樹的學(xué)生結(jié)點(diǎn)中有一個指針指向該單鏈表的第一個結(jié)點(diǎn)。
(2)算法要點(diǎn)(10分,三種操作各3分,敘述的條理性1分)
①試卷成績插入,根據(jù)試卷的學(xué)號在二叉排序樹中查找該學(xué)生結(jié)點(diǎn)。若找到,則在該學(xué)生結(jié)點(diǎn)所指的成績鏈表中插入一個成績結(jié)點(diǎn);若未找到,則先在二叉排序樹中插入一個新的學(xué)生結(jié)點(diǎn),然后再往這個學(xué)生結(jié)點(diǎn)所指的(空的)成績鏈表中插入一個成績結(jié)點(diǎn)。
②學(xué)生成績查詢,根據(jù)所給學(xué)號在二叉排序樹中查找該學(xué)生結(jié)點(diǎn),再在該結(jié)點(diǎn)所指的成績鏈表中沿著指針讀出所有成績。
③成績單輸出。對二叉排序樹進(jìn)行對稱序周游,在訪問到每個學(xué)生結(jié)點(diǎn)時輸出該結(jié)點(diǎn)指向的成績鏈表中的所有成績。
(3)設(shè)計(jì)理由(5分)
①學(xué)生結(jié)點(diǎn)組織成二叉排序樹,使三種操作都有較高的效率:插入n個學(xué)生結(jié)點(diǎn)O(nlog2n),查找一個學(xué)生結(jié)點(diǎn)O(log2n),輸出所有學(xué)生結(jié)點(diǎn)O(n)。
②每個學(xué)生的所有成績結(jié)點(diǎn)組織成鏈表,動態(tài)申請空間,適合于每個學(xué)生選修的課程數(shù)不等的實(shí)際情況,節(jié)省空間。
2.(1998年)
人們在管理實(shí)踐中發(fā)現(xiàn),數(shù)據(jù)庫技術(shù)是信息資源的整理、保存、管理和使用的有效的手段。數(shù)據(jù)庫按其數(shù)據(jù)結(jié)構(gòu)模型分類,通常可分為層次型數(shù)據(jù)庫、網(wǎng)絡(luò)型數(shù)據(jù)庫、關(guān)系型數(shù)據(jù)庫和面向?qū)ο笮蛿?shù)據(jù)庫,各種類似的數(shù)據(jù)模型都有自身的特點(diǎn)。試從關(guān)系數(shù)據(jù)模型的優(yōu)點(diǎn)和弱點(diǎn)論述:
(1)為什么人們在開發(fā)以事務(wù)處理為主的信息系統(tǒng)(例如管理信息系統(tǒng))時,大多選用關(guān)系型數(shù)據(jù)庫作為開發(fā)環(huán)境?(18分)
(2)在許多含有復(fù)雜數(shù)據(jù)結(jié)構(gòu)或豐富語義的實(shí)際應(yīng)用領(lǐng)域中,為什么要選用面向?qū)ο髷?shù)據(jù)庫或要對關(guān)系型數(shù)據(jù)庫作某些擴(kuò)充和修改?(12分)
答案:
(1)首先,關(guān)系數(shù)據(jù)模型結(jié)構(gòu)簡單,為二維表格結(jié)構(gòu)與目前事務(wù)處理系統(tǒng)中數(shù)據(jù)多以二維表格結(jié)構(gòu)組織和表示相適應(yīng)。(10分)
其次,關(guān)系數(shù)據(jù)模型的其他優(yōu)點(diǎn)也適應(yīng)事務(wù)處理的要求:
①表格是一集合,因此集合論等知識可以引入關(guān)系型數(shù)據(jù)模型中,使它具有堅(jiān)實(shí)的數(shù)學(xué)理論基礎(chǔ)。(4分)
②有簡單、易懂`易學(xué)的關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言SQL的支持。(2分)
③數(shù)據(jù)具有較高的獨(dú)立性。(2分)
(2)在含有復(fù)雜數(shù)據(jù)結(jié)構(gòu)或豐富語義的實(shí)際應(yīng)用領(lǐng)域中,一般選用面向?qū)ο髷?shù)據(jù)庫,或要對關(guān)系數(shù)據(jù)庫作某些擴(kuò)充和修改是因?yàn)椋?BR> ①關(guān)系數(shù)據(jù)模型不擅長于表示復(fù)雜對象數(shù)據(jù)類型。(4分)
②也不擅長于表示實(shí)體間的語義聯(lián)系。(4分)
③而面向?qū)ο髷?shù)據(jù)模型在這兩方面有優(yōu)勢。(4分)
本題要求設(shè)計(jì)一個學(xué)生試卷成績輸入、查詢和成績單輸出系統(tǒng)(簡稱SRS)的數(shù)據(jù)結(jié)構(gòu)和算法要點(diǎn)。問題描述如下:
要輸入到SRS系統(tǒng)中的每一份試卷成績反映一個學(xué)生選修一門課程的考試結(jié)果,它包括以下數(shù)據(jù)項(xiàng):學(xué)號、姓名、課程名、成績。由于實(shí)行了靈活的選課制度,所以每個學(xué)生選修多少門課程,選修哪些課程都可以不同。要輸入的多份試卷成績并未按任何數(shù)據(jù)項(xiàng)排列順序,它們以任意的順序被輸入到系統(tǒng)中來。
SRS系統(tǒng)要具有以下功能:①試卷成績插入,將試卷成績逐個插入到SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)中。②學(xué)生成績查詢,給出學(xué)號查找該學(xué)生所選修的各門課程的考試成績。③成績單輸出,按學(xué)號遞增的順序依次輸出所有學(xué)生的學(xué)號、姓名,及其所選修的各門課程的課程名和成績。(為簡單起見,假設(shè)上述所有工作都在計(jì)算機(jī)內(nèi)存中進(jìn)行。)
請?jiān)O(shè)計(jì)SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和算法要點(diǎn),使上述三項(xiàng)操作都有較高的執(zhí)行效率。從以下方面闡述你的設(shè)計(jì):
(1)SRS系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(15分)
①數(shù)據(jù)結(jié)構(gòu)的Pascal語句描述
②數(shù)據(jù)結(jié)構(gòu)的示意圖
③數(shù)據(jù)結(jié)構(gòu)的簡單文字說明
(2)SRS系統(tǒng)的算法要點(diǎn)(10分)
(只要簡單的文字說明,不必寫出Pascal程序)
①試卷成績插入
②學(xué)生成績查詢
③成績單輸出
(3)簡單陳述你的上述設(shè)計(jì)的理由(5分)
答案:
本題可有多種不同的設(shè)計(jì)方案,下面給出其中一個較好的方案。
(1)數(shù)據(jù)結(jié)構(gòu)(15分,其中對三種操作的有效支持各4分,敘述的條理性3分。)
①數(shù)據(jù)結(jié)構(gòu)的Pascal語句描述
TYPEpptr=↑pnode;
pnode=RECORD
cname:string;
score:0..100;
next:pptr
END;
sptr=↑pnode;
snode=RECORD
sno:integer;
sname:string;
llink,rlink:sptr;
plink:pptr
END;
VARt:sptr;
②數(shù)據(jù)結(jié)構(gòu)的示意圖
9508027Liu٨٨
OS72
OS60
9408023Fang٨٨
9508091Chen ٨
9508010Li
DS85
DB66٨
SE89
AI92٨
DS90
OS95
t
③數(shù)據(jù)結(jié)構(gòu)的簡單文字說明 每個學(xué)生結(jié)點(diǎn)包含學(xué)生的學(xué)號和姓名,所有學(xué)生結(jié)點(diǎn)組織成一棵二叉排序樹,用link-rlink法存儲。
每份試卷成績作為一個鏈表結(jié)點(diǎn),包含課程名和成績,每個學(xué)生的所有試卷成績結(jié)點(diǎn)鏈接成一個單鏈表,并且二叉排序樹的學(xué)生結(jié)點(diǎn)中有一個指針指向該單鏈表的第一個結(jié)點(diǎn)。
(2)算法要點(diǎn)(10分,三種操作各3分,敘述的條理性1分)
①試卷成績插入,根據(jù)試卷的學(xué)號在二叉排序樹中查找該學(xué)生結(jié)點(diǎn)。若找到,則在該學(xué)生結(jié)點(diǎn)所指的成績鏈表中插入一個成績結(jié)點(diǎn);若未找到,則先在二叉排序樹中插入一個新的學(xué)生結(jié)點(diǎn),然后再往這個學(xué)生結(jié)點(diǎn)所指的(空的)成績鏈表中插入一個成績結(jié)點(diǎn)。
②學(xué)生成績查詢,根據(jù)所給學(xué)號在二叉排序樹中查找該學(xué)生結(jié)點(diǎn),再在該結(jié)點(diǎn)所指的成績鏈表中沿著指針讀出所有成績。
③成績單輸出。對二叉排序樹進(jìn)行對稱序周游,在訪問到每個學(xué)生結(jié)點(diǎn)時輸出該結(jié)點(diǎn)指向的成績鏈表中的所有成績。
(3)設(shè)計(jì)理由(5分)
①學(xué)生結(jié)點(diǎn)組織成二叉排序樹,使三種操作都有較高的效率:插入n個學(xué)生結(jié)點(diǎn)O(nlog2n),查找一個學(xué)生結(jié)點(diǎn)O(log2n),輸出所有學(xué)生結(jié)點(diǎn)O(n)。
②每個學(xué)生的所有成績結(jié)點(diǎn)組織成鏈表,動態(tài)申請空間,適合于每個學(xué)生選修的課程數(shù)不等的實(shí)際情況,節(jié)省空間。
2.(1998年)
人們在管理實(shí)踐中發(fā)現(xiàn),數(shù)據(jù)庫技術(shù)是信息資源的整理、保存、管理和使用的有效的手段。數(shù)據(jù)庫按其數(shù)據(jù)結(jié)構(gòu)模型分類,通常可分為層次型數(shù)據(jù)庫、網(wǎng)絡(luò)型數(shù)據(jù)庫、關(guān)系型數(shù)據(jù)庫和面向?qū)ο笮蛿?shù)據(jù)庫,各種類似的數(shù)據(jù)模型都有自身的特點(diǎn)。試從關(guān)系數(shù)據(jù)模型的優(yōu)點(diǎn)和弱點(diǎn)論述:
(1)為什么人們在開發(fā)以事務(wù)處理為主的信息系統(tǒng)(例如管理信息系統(tǒng))時,大多選用關(guān)系型數(shù)據(jù)庫作為開發(fā)環(huán)境?(18分)
(2)在許多含有復(fù)雜數(shù)據(jù)結(jié)構(gòu)或豐富語義的實(shí)際應(yīng)用領(lǐng)域中,為什么要選用面向?qū)ο髷?shù)據(jù)庫或要對關(guān)系型數(shù)據(jù)庫作某些擴(kuò)充和修改?(12分)
答案:
(1)首先,關(guān)系數(shù)據(jù)模型結(jié)構(gòu)簡單,為二維表格結(jié)構(gòu)與目前事務(wù)處理系統(tǒng)中數(shù)據(jù)多以二維表格結(jié)構(gòu)組織和表示相適應(yīng)。(10分)
其次,關(guān)系數(shù)據(jù)模型的其他優(yōu)點(diǎn)也適應(yīng)事務(wù)處理的要求:
①表格是一集合,因此集合論等知識可以引入關(guān)系型數(shù)據(jù)模型中,使它具有堅(jiān)實(shí)的數(shù)學(xué)理論基礎(chǔ)。(4分)
②有簡單、易懂`易學(xué)的關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言SQL的支持。(2分)
③數(shù)據(jù)具有較高的獨(dú)立性。(2分)
(2)在含有復(fù)雜數(shù)據(jù)結(jié)構(gòu)或豐富語義的實(shí)際應(yīng)用領(lǐng)域中,一般選用面向?qū)ο髷?shù)據(jù)庫,或要對關(guān)系數(shù)據(jù)庫作某些擴(kuò)充和修改是因?yàn)椋?BR> ①關(guān)系數(shù)據(jù)模型不擅長于表示復(fù)雜對象數(shù)據(jù)類型。(4分)
②也不擅長于表示實(shí)體間的語義聯(lián)系。(4分)
③而面向?qū)ο髷?shù)據(jù)模型在這兩方面有優(yōu)勢。(4分)