-
大小: 2.92MB文件類(lèi)型: .rar金幣: 2下載: 0 次發(fā)布日期: 2024-02-02
- 語(yǔ)言: C/C++
- 標(biāo)簽: 嚴(yán)蔚敏??數(shù)據(jù)結(jié)構(gòu)??C語(yǔ)言??源代碼??
資源簡(jiǎn)介
《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)
算法源碼及運(yùn)行演示系統(tǒng)使用說(shuō)明
一、啟動(dòng)演示系統(tǒng)
雙擊演示系統(tǒng)應(yīng)用程序文件“DS_VC_ALGO.EXE”啟動(dòng)演示系統(tǒng),出現(xiàn)圖1所示界面。
圖1 《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)算法源碼及運(yùn)行演示系統(tǒng)主界面
二、演示系統(tǒng)使用步驟
除了個(gè)別算法之外,演示系統(tǒng)給出了《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)書(shū)中算法對(duì)應(yīng)的程序代碼(CPP文件)和測(cè)試運(yùn)行程序(VC++6.0的EXE文件)。通過(guò)本系統(tǒng),可以顯示算法的源代碼以及運(yùn)行結(jié)果。具體操作步驟如下:
1.選擇相應(yīng)章
單擊演示系統(tǒng)界面右側(cè)章選擇按鈕。
例如,要選擇第6章,則單擊“第6章”選擇按鈕。
當(dāng)相應(yīng)章被選擇后,窗口的右側(cè)部分將列出本章的算法選擇按鈕。
例如,選擇第6章后,窗口的右側(cè)部分將顯示第6章中的算法6.1-6.13和6.15的選擇按鈕。由于書(shū)中的算法6.14和6.16只是示意性算法,故未給出源碼,其按鈕上的文字為灰色,處于“無(wú)效”狀態(tài)。
2.選擇相應(yīng)章中的算法
單擊窗口右側(cè)部分所列舉的本章某個(gè)算法選擇按鈕,被選擇的算法的源碼將在窗口左側(cè)空白區(qū)域中顯示。對(duì)于較長(zhǎng)的源碼,單擊顯示區(qū)域后,可用鍵盤(pán)的光標(biāo)鍵和翻頁(yè)鍵瀏覽源碼。
例如,選擇了第6章中的算法6.5后界面如圖2所示:
圖2 選擇算法6.5
3.運(yùn)行測(cè)試程序
單擊窗口上部的“運(yùn)行”按鈕,將彈出運(yùn)行窗口,運(yùn)行所選算法的測(cè)試程序。若運(yùn)行按鈕為灰色,表示該算法無(wú)單獨(dú)測(cè)試程序。
例如,算法6.5的測(cè)試運(yùn)行窗口如圖3所示:
圖3 測(cè)試運(yùn)行窗口
測(cè)試運(yùn)行說(shuō)明:
測(cè)試運(yùn)行窗口顯示程序的執(zhí)行過(guò)程及結(jié)果。若在顯示過(guò)程中出現(xiàn)運(yùn)行窗口無(wú)法正常演示的情況,只需調(diào)節(jié)運(yùn)行窗口大小即可正常顯示(調(diào)節(jié)最小化按鈕或窗口最大化/還原按鈕“ ”)。
三、退出演示系統(tǒng)
使用完畢后,單擊窗口右上角關(guān)閉按鈕“ ”退出演示系統(tǒng)。
四、測(cè)試程序示例
在《數(shù)據(jù)結(jié)構(gòu)》的課程教學(xué)中,各抽象數(shù)據(jù)類(lèi)型的設(shè)計(jì)與實(shí)現(xiàn)是重要的學(xué)習(xí)和實(shí)踐環(huán)節(jié)。為此,本系統(tǒng)只給出了各算法源碼的測(cè)試程序的可執(zhí)行文件。在此,給出算法6.5的測(cè)試程序示例,以供參考。
算法6.5是中序遍歷線索二叉樹(shù)的非遞歸算法,要對(duì)其源碼進(jìn)行測(cè)試,可首先調(diào)用算法6.6及6.7建立中序線索二叉樹(shù)。以下是測(cè)試程序的源碼,相關(guān)類(lèi)型和輔助函數(shù)定義在文件include06.h和include06.cpp中,此略。
// test0605.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "include06.h" // 相關(guān)類(lèi)型和輔助函數(shù)的定義
BiThrTree pre; // 線索二叉樹(shù)遍歷輔助變量
#include "algo0607.cpp" // 算法6.7源碼
#include "algo0606.cpp" // 算法6.6源碼
#include "algo0605.cpp" // 算法6.5源碼
int main(int argc, char* argv[]) {
char gl_str[64];
BiThrTree T;
BiThrTree Thrt;
printf("*******************************************\n");
printf("* 《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)嚴(yán)蔚敏,吳偉民 *\n");
printf("* 算法6.5, 6.6 & 6.7 *\n");
printf("*******************************************\n");
srand((unsigned)time(NULL)); // 隨機(jī)函數(shù)初始化
T=NULL; // 空二叉樹(shù)T
for (int pass=0; pass<5; pass++) { // 測(cè)試運(yùn)行5次,第一次為空樹(shù)
outBiThrTree(T,gl_str); // 以類(lèi)廣義表的形式輸出二叉樹(shù)T到gl_str
printf("T = %s\n", gl_str); // 顯示
pre = NULL;
Status r = InOrderThreading(Thrt, T); // 算法6.6,6.7,中序線索化
printf("InOrderThreading(Thrt, T) : %s\n", (r) ? "OK" : "ERROR");
initVisitStr(); // 將visitStr清為空串
InOrderTraverse_Thr(Thrt, v

代碼片段和文件信息
Status?TransposeSMatrix(TSMatrix?M?TSMatrix?&T)?{??//?算法5.1
??//?采用三元組順序表存儲(chǔ)表示,求稀疏矩陣M的轉(zhuǎn)置矩陣T
??int?p?q?col;
??T.mu?=?M.nu;??T.nu?=?M.mu;??T.tu?=?M.tu;
??if?(T.tu)?{
????q?=?1;
????for?(col=1;?col<=M.nu;?++col)
??????for?(p=1;?p<=M.tu;?++p)
????????if?(M.data[p].j?==?col)?{
??????????T.data[q].i=M.data[p].j;T.data[q].j?=M.data[p].i;
??????????T.data[q].e?=M.data[p].e;??++q;?
????????}
??}
??return?OK;
}?//?TransposeSMatrix
??????????????????????????????
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件????????180??2003-03-04?15:29??DS-Algo-VC\algo0409BookIdx.txt
?????文件????????218??2002-05-26?12:52??DS-Algo-VC\Algo0409BookInfo.txt
?????文件????????120??2003-03-06?15:28??DS-Algo-VC\Algo1104_FI.rec
?????文件????????132??2003-03-06?15:28??DS-Algo-VC\Algo1104_FO.rec
?????文件????????120??2003-03-06?15:28??DS-Algo-VC\Algo1201_f.rec
?????文件?????????72??2003-03-06?15:28??DS-Algo-VC\Algo1201_g.rec
?????文件??????25600??2000-01-31?05:00??DS-Algo-VC\BORLNDMM.DLL
?????文件????1497088??2000-08-07?05:01??DS-Algo-VC\CC3250MT.DLL
?????文件??????91136??2002-12-11?10:16??DS-Algo-VC\DS_VC_ALGO.exe
?????文件????2023424??2000-01-24?05:01??DS-Algo-VC\VCL50.BPL
?????文件?????124416??2003-03-04?16:24??DS-Algo-VC\使用說(shuō)明.doc
?????文件???????1358??2002-11-21?15:08??DS-Algo-VC\CHAP12\ALGO1201.CPP
?????文件????????108??2002-12-11?11:10??DS-Algo-VC\CHAP12\Algo1201_f.rec
?????文件?????????72??2002-12-11?11:10??DS-Algo-VC\CHAP12\Algo1201_g.rec
?????文件??????49152??2002-12-11?11:10??DS-Algo-VC\CHAP12\TEST1201.EXE
?????文件????????870??2002-11-21?15:00??DS-Algo-VC\CHAP11\ALGO1101.CPP
?????文件????????331??2002-06-10?17:58??DS-Algo-VC\CHAP11\ALGO1102.CPP
?????文件????????420??2002-11-21?15:01??DS-Algo-VC\CHAP11\ALGO1103.CPP
?????文件????????801??2002-12-11?09:53??DS-Algo-VC\CHAP11\ALGO1104.CPP
?????文件????????120??2002-12-11?11:15??DS-Algo-VC\CHAP11\Algo1104_FI.rec
?????文件????????132??2002-12-11?11:15??DS-Algo-VC\CHAP11\Algo1104_FO.rec
?????文件????????906??2002-11-21?15:04??DS-Algo-VC\CHAP11\ALGO1105.CPP
?????文件????????406??2002-11-21?15:05??DS-Algo-VC\CHAP11\ALGO1106.CPP
?????文件????????539??2002-11-21?15:05??DS-Algo-VC\CHAP11\ALGO1107.CPP
?????文件??????45056??2002-06-20?11:50??DS-Algo-VC\CHAP11\TEST1101.EXE
?????文件??????49152??2002-12-11?11:14??DS-Algo-VC\CHAP11\TEST1104.EXE
?????文件????????442??2002-11-21?17:11??DS-Algo-VC\CHAP10\ALGO1001.CPP
?????文件????????638??2002-11-21?17:12??DS-Algo-VC\CHAP10\ALGO1002.CPP
?????文件????????735??2002-11-21?17:14??DS-Algo-VC\CHAP10\ALGO1003.CPP
?????文件????????614??2002-11-21?17:14??DS-Algo-VC\CHAP10\ALGO1004.CPP
............此處省略225個(gè)文件信息
評(píng)論
共有 條評(píng)論