第一篇:《數(shù)據(jù)結(jié)構(gòu)》 實(shí)驗(yàn)報(bào)告(附實(shí)例) ---實(shí)驗(yàn)一 線性表的基本操作實(shí)現(xiàn)
實(shí)驗(yàn) 一 線性表的基本操作實(shí)現(xiàn)及其應(yīng)用
一、實(shí)驗(yàn)?zāi)康?/p>
1、熟練掌握線性表的基本操作在兩種存儲(chǔ)結(jié)構(gòu)上的實(shí)現(xiàn),其中以熟悉各種鏈表的操作為重點(diǎn)。
2、鞏固高級(jí)語(yǔ)言程序設(shè)計(jì)方法與技術(shù),會(huì)用線性鏈表解決簡(jiǎn)單的實(shí)際問(wèn)題。
二、實(shí)驗(yàn)內(nèi)容
√
1、單鏈表的表示與操作實(shí)現(xiàn)(*)
2、約瑟夫環(huán)問(wèn)題
3、Dr.Kong的藝術(shù)品
三、實(shí)驗(yàn)要求
1、按照數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)任務(wù)書,提前做好實(shí)驗(yàn)預(yù)習(xí)與準(zhǔn)備工作。
2、加“*”題目必做,其他題目任選;多選者并且保質(zhì)保量完成適當(dāng)加分。
3、嚴(yán)格按照數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告模板和規(guī)范,及時(shí)完成實(shí)驗(yàn)報(bào)告。
四、實(shí)驗(yàn)步驟
(說(shuō)明:依據(jù)實(shí)驗(yàn)內(nèi)容分別說(shuō)明實(shí)驗(yàn)程序中用到的數(shù)據(jù)類型的定義、主程序的流程以及每個(gè)操作(成員函數(shù))的偽碼算法、函數(shù)實(shí)現(xiàn)、程序編碼、調(diào)試與分析、總結(jié)、附流程圖與主要代碼)
㈠、數(shù)據(jù)結(jié)構(gòu)與核心算法的設(shè)計(jì)描述
(程序中每個(gè)模塊或函數(shù)應(yīng)加注釋,說(shuō)明函數(shù)功能、入口及出口參數(shù))
1、單鏈表的結(jié)點(diǎn)類型定義
/* 定義DataType為int類型 */ typedef int DataType;
/* 單鏈表的結(jié)點(diǎn)類型 */ typedef struct LNode { DataType data;struct LNode *next;}LNode,*LinkedList;
2、初始化單鏈表
LinkedList LinkedListInit(){ // 每個(gè)模塊或函數(shù)應(yīng)加注釋,說(shuō)明函數(shù)功能、入口及出口參數(shù) }
3、清空單鏈表
void LinkedListClear(LinkedList L){// 每個(gè)模塊或函數(shù)應(yīng)加注釋,說(shuō)明函數(shù)功能、入口及出口參數(shù)}
4、檢查單鏈表是否為空
int LinkedListEmpty(LinkedList L){ ….}
5、遍歷單鏈表 void LinkedListTraverse(LinkedList L){ ….}
6、求單鏈表的長(zhǎng)度
int LinkedListLength(LinkedList L){ ….}
7、從單鏈表表中查找元素
LinkedList LinkedListGet(LinkedList L,int i){ //L是帶頭結(jié)點(diǎn)的鏈表的頭指針,返回第 i 個(gè)元素 }
8、從單鏈表表中查找與給定元素值相同的元素在鏈表中的位置
LinkedList LinkedListLocate(LinkedList L, DataType x){ …… }
9、向單鏈表中插入元素
void LinkedListInsert(LinkedList L,int i,DataType x){ // L 為帶頭結(jié)點(diǎn)的單鏈表的頭指針,本算法 // 在鏈表中第i 個(gè)結(jié)點(diǎn)之前插入新的元素 x }
10、從單鏈表中刪除元素
void LinkedListDel(LinkedList L,DataType x){ // 刪除以 L 為頭指針的單鏈表中第 i 個(gè)結(jié)點(diǎn) }
11、用尾插法建立單鏈表
LinkedList LinkedListCreat(){ …… } ㈡、函數(shù)調(diào)用及主函數(shù)設(shè)計(jì)
(可用函數(shù)的調(diào)用關(guān)系圖說(shuō)明)㈢ 程序調(diào)試及運(yùn)行結(jié)果分析 ㈣ 實(shí)驗(yàn)總結(jié)
五、主要算法流程圖及程序清單
1、主要算法流程圖:
2、程序清單
(程序過(guò)長(zhǎng),可附主要部分)
說(shuō)明:以后每次實(shí)驗(yàn)報(bào)告均按此格式書寫。
我在布置實(shí)驗(yàn)室時(shí),僅給出實(shí)驗(yàn)名稱、實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)內(nèi)容及相關(guān)數(shù)據(jù)結(jié)構(gòu)。
題目一程序參考框架 # include
/* 單鏈表的結(jié)點(diǎn)類型 */ typedef struct LNode {ElemType data;struct LNode *next;} LNode,*LinkedList;
/* 初始化單鏈表 */ LinkedList LinkedListInit(){ } /* 清空單鏈表 */ void LinkedListClear(LinkedList L){ } /* 檢查單鏈表是否為空 */ int LinkedListEmpty(LinkedList L){ } /* 遍歷單鏈表 */ void LinkedListTraverse(LinkedList L){ } int LinkedListLength(LinkedList L){ } LinkedList LinkedListGet(LinkedList L, int i){ } LinkedList LinkedListLocate(LinkedList L, ElemType x){ }
void LinkedListInsert(LinkedList L, int i, ElemType x){LinkedList pre,p,s;int j;pre=L;j=1;p=L->next;while(pre&&jnext;j++;} if(pre==NULL){printf(“給的i值超過(guò)了表長(zhǎng)”);exit(0);} s=(LNode *)malloc(sizeof(LNode));s->data=x;pre->next=s;s->next=p;}
void LinkedListDel(LinkedList L,ElemType x){ LinkedList pre,p;int j;pre=L;j=1;p=L->next;while(p&&p->data!=x){pre=p;p=p->next;j++;} if(p==NULL){printf(“表中沒(méi)有值為x的結(jié)點(diǎn)”);exit(0);} pre->next=p->next;free(p);}
LinkedList LinkedListCreat(){ LinkedList L=LinkedListInit(),p,r;ElemType x;r=L;printf(“please input data,input-1 is endn”);scanf(“%d”,&x);while(x!=flag){p=(LinkedList)malloc(sizeof(LNode));p->data=x;r->next=p;r=p;scanf(“%d”,&x);} r->next=NULL;return L;}
int scan(){int d;printf(“please input the operationn”);printf(“1.初始化 2.清空3.求鏈表長(zhǎng)度4.檢查鏈表是否為空n”);printf(“5.檢查鏈表是否為滿 6.遍歷鏈表 7.從鏈表中查找元素n”);printf(“8.從鏈表中查找與給定元素值相同的元素在順序表中的位置n”);printf(“9.向鏈表中插入元素10.從鏈表中刪除元素n”);printf(“其他鍵退出。。。n”);scanf(“%d”,&d);return(d);}
main(){int quit=0;int i;ElemType e;LinkedList L;while(!quit)switch(scan()){case 1: ….;break;case 2: ….;break;case 3: ….;break;case 4: ….;break;case 5:LinkedListTraverse(L);break;case 6: ….;break;case 7: ….;break;case 8: ….;break;case 9: ….;break;case 10: ….;break;default: quit=1;} return 0;}
第二篇:數(shù)據(jù)結(jié)構(gòu)--實(shí)驗(yàn)報(bào)告 線性表的基本操作
}(一)單鏈表的基本操作
#include
LinkList q=L;//使q指向表尾
} Status GetElem(LinkList L,int i,ElemType &e)//取第i個(gè)元素 { LinkList p=L->next;int j=1;while(p&&jnext;++j;} for(int i=1;i<=n;i++){ p=new LNode;
cin>>p->data;p->next=NULL;q->next=p;q=p;} if(!p||j>i)return error;//第i個(gè)元素不存在
e=p->data;return ok;} Status LinkInsert(LinkList &L,int i,ElemType e)//插入 { LinkList p=L;int j=0;while(p&&j
s->data=e;s->next=p->next;//插入L中
p->next=s;return ok;}
Status ListDelete(LinkList &L,int i,ElemType &e)// 刪除 { LinkList p=L;LinkList q;int j=0;while(p->next&&j p=p->next;++j;} if(!(p->next)||j>i-1)return error;//刪除位置不合理 q=p->next;p->next=q->next;//刪除并釋放結(jié)點(diǎn) e=q->data;delete(q);return ok; } void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){ //合并兩個(gè)順序鏈表 LinkList pa,pc,pb;pa=La->next;pb=Lb->next;Lc=pc=La;while(pa&&pb){ if(pa->data<=pb->data) { pc->next=pa; pc=pa;pa=pa->next;} else { pc->next=pb; pc=pb; pb=pb->next;} } pc->next=pa?pa:pb;delete(Lb);} void show(LinkList L)//{ LinkList p;p=L->next;while(p){ cout< data<<“-->”;p=p->next;} cout< 顯示 表長(zhǎng) 3 p=p->next;} return i;} void xiugai(LinkList L)//修改 { int i,j=1;ElemType k;ElemType e,m;LinkList p=L->next;cout<<“請(qǐng)輸入要修改的元素位置(0>i;GetElem(L,i,e);cout<<“該位置的元素:”< cin>>x; cout<<“請(qǐng)輸入”< CreateList(list,x);break;case 2: cout<<“單鏈表顯示如下:”< show(list);break;case 3: int s;cout<<“單鏈表的長(zhǎng)度為:”< ListDelete(list,x,y); } break;case 8: hebing();break;case 9: exit(0);break;default : cout<<“輸入有誤,請(qǐng)重新輸入”< 四、測(cè)試結(jié)果 1)順序表 的測(cè)試結(jié)果 8 2)單鏈表的測(cè)試結(jié)果 五、心得體會(huì) 當(dāng)聽(tīng)到老師說(shuō)寫數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告時(shí),我有點(diǎn)驚訝,才學(xué)了不到一個(gè)月,就要寫實(shí)驗(yàn)報(bào)告。記得去年學(xué)習(xí)C++時(shí),學(xué)了一個(gè)學(xué)期,程序設(shè)計(jì)用了三周,才完成的,這個(gè)實(shí)驗(yàn)報(bào)告居然要一周完成兩個(gè)設(shè)計(jì),覺(jué)得很難。但是現(xiàn)在一周過(guò)去了,我也寫完了,自我感覺(jué)良好。 通過(guò)這次寫實(shí)驗(yàn)報(bào)告,我深切的理解了這門課的本質(zhì)。剛開(kāi)始學(xué)這門課時(shí),當(dāng)時(shí)還不清楚這門課程的目的,現(xiàn)在,我真正的理解了:數(shù)據(jù)結(jié)構(gòu)像是身體的骨骼,而C++是填充這骨骼的肉體,二者相結(jié)合才能使整個(gè)程序更加完整,健全。數(shù)據(jù)結(jié)構(gòu)是個(gè)框架,模型,抽象數(shù)據(jù)類型中列舉了各種操作,而所用的C++語(yǔ)言,將各種操作描述出來(lái)構(gòu)成算法。數(shù)據(jù)結(jié)構(gòu)+算法=程序設(shè)計(jì)。 在這次設(shè)計(jì)的過(guò)程中,我還遇到了,很多的問(wèn)題。順序表是按順序存儲(chǔ)的,用了一維數(shù)組來(lái)存儲(chǔ),又結(jié)合C++的程序設(shè)計(jì),我又用了類,但是,在執(zhí)行時(shí)出現(xiàn)了問(wèn)題。后來(lái)問(wèn)同學(xué),指出我的錯(cuò)誤,不過(guò)獲益不少。我又重新整理思路,把順序表的基本操作寫好了。雖然走了很多彎路,但是讓我認(rèn)識(shí)到,一定要?jiǎng)?chuàng)新,大膽,不能按照舊的思路去干新的事情。 單鏈表寫起來(lái)簡(jiǎn)單多了,這個(gè)很快就搞定了。但是細(xì)節(jié)上出了問(wèn)題。比如說(shuō),有些變量的重復(fù)定義,有些變量又沒(méi)有定義,在調(diào)用函數(shù),就直接復(fù)制過(guò)來(lái),沒(méi)有改參數(shù)……通過(guò)修改,我深刻理解到:細(xì)節(jié)決定成敗,在以后,不管做任何事情都要認(rèn)真,細(xì)心。 這次的實(shí)驗(yàn)報(bào)告,讓我受益匪淺,不僅有知識(shí)方面的,還有生活和精神上的??傊視?huì)繼續(xù)我的興趣編程,相信在編程的過(guò)程中,能不斷的提高自己。 實(shí)驗(yàn)一linux基本操作實(shí)驗(yàn)的實(shí)驗(yàn)報(bào)告 一實(shí)驗(yàn)?zāi)康?/p> 1、熟悉嵌入式開(kāi)發(fā)平臺(tái)部件,了解宿主機(jī)/目標(biāo)機(jī)開(kāi)發(fā)模式; 2、熟悉和掌握常用Linux的命令和工具。 二實(shí)驗(yàn)步驟 1、連接主機(jī)和目標(biāo)板;(三根線,網(wǎng)線直接連接實(shí)驗(yàn)箱和PC機(jī),實(shí)驗(yàn)箱UART2連接主機(jī)的UART口)。 2、Linux命令的熟悉與操作 PC端:在PC機(jī)的桌面上打開(kāi)虛擬機(jī),并啟動(dòng)Linux系統(tǒng),打開(kāi)命令終端,操作Linux基本命令,如:查看:ls,進(jìn)入目錄:cd,創(chuàng)建文件:mkdir,刪除文件:rmdir,配置網(wǎng)絡(luò):ifconfig,掛載:mount,設(shè)置權(quán)限:chmod,編輯器:vi,拷貝:cp等命令,要求能熟練操作。 使用方法: 1.查看:ls Ls列出文件和目錄 Ls–a 顯示隱藏文件 Ls–l 顯示長(zhǎng)列格式ls–al 其中:藍(lán):目錄;綠:可執(zhí)行文件;紅:壓縮文件;淺藍(lán):鏈接文件;灰:其他文件;紅底白字:錯(cuò)誤的鏈接文件 2.進(jìn)入目錄:cd 改變當(dāng)前目錄:cd 目錄名(進(jìn)入用戶home目錄:cd ~;進(jìn)入上一級(jí)目錄:cd-)3.創(chuàng)建文件:mkdir 建立文件/目錄:touch 文件名/mkdir目錄名 4.刪除文件:rmdir 刪除空目錄:rmdir目錄名 5.配置網(wǎng)絡(luò):ifconfig 網(wǎng)絡(luò)確定目錄 '/ mnt/hda2' 已經(jīng)存在 umount /dev/hda2 卸載一個(gè)叫做hda2的盤使用 “+” 設(shè)置權(quán)限,使用 “-” 用于取消 ls-lh顯示權(quán)限 ls /tmp | pr-T5-W$COLUMNS 將終端劃分成5欄顯示 chmodugo+rwx directory1 設(shè)置目錄的所有人(u)、群組(g)以及其他人(o)以讀(r)、寫(w)和執(zhí)行(x)的權(quán)限 chmod go-rwx directory1 刪除群組(g)與其他人(o)對(duì)目錄的讀寫執(zhí)行權(quán)限 chown user1 file1 改變一個(gè)文件的所有人屬性 chown-R user1 directory1 改變一個(gè)目錄的所有人屬性并同時(shí)改變改目錄下所有文件的屬性 chgrp group1 file1 改變文件的群組 chown user1:group1 file1 改變一個(gè)文件的所有人和群組屬性 find /-perm-u+s羅列一個(gè)系統(tǒng)中所有使用了SUID控制的文件 chmodu+s /bin/file1 設(shè)置一個(gè)二進(jìn)制文件的 SUID 位類似SUID,不過(guò)這是針對(duì)目錄的 chmod g-s /home/public 禁用一個(gè)目錄的 SGID 位 chmodo+t /home/public 設(shè)置一個(gè)文件的 STIKY 位-只允許合法所有人刪除文件 chmod o-t /home/public 禁用一個(gè)目錄的 STIKY 位 8.編輯器:vi vi開(kāi)發(fā)步驟: a)vi hell.sql(文件名)b)按i [進(jìn)入插入模式] c)按 esc [進(jìn)入命令模式] d)輸入qw [表示退出保存] e)輸入 q![表示退出不保存] f)輸入ls/ls–l [查看] g)gcc-o my1 hello.sql [-o my1 代表輸出按my1 名] w表示與入的意思,也就將目前的文件內(nèi)容加以保存, q表示退出的意思,也是vi的執(zhí)行 q!強(qiáng)制離開(kāi),并且不保存文件 wq將修改過(guò)得內(nèi)容保存,并離開(kāi)vi set nu 在文件中每行加入行號(hào) ser noun 取消行號(hào) 輸入數(shù)字若輸入數(shù)字再按ESC建就可將光標(biāo)移至改行 /字符串在很長(zhǎng)的文件在可以利用”/字符串”的命令來(lái)查找特定字 例如“tcp”如果不是所需要的可以按N繼續(xù)往下查找 ?字符串可以利用”?字符串”的命令查找特定字 例如”:/tcp”如果不是所需要的可以按N繼續(xù)往下查找 9.拷貝:cp等命令 cp–r dir1 dir2 遞歸復(fù)制命令(復(fù)制子目錄信息)具體操作:打開(kāi)虛擬機(jī),隨意選擇一個(gè)linux版本,打開(kāi)命令終端。輸入以上命令,觀察結(jié)果,熟悉指令操作。 圖2-1指令熟悉截圖 3、打開(kāi)PC桌面的超級(jí)終端,開(kāi)啟實(shí)驗(yàn)箱電源,觀察嵌入式開(kāi)發(fā)平臺(tái)的啟動(dòng)過(guò)程的打印信息,等待嵌入式平臺(tái)的操作系統(tǒng)啟動(dòng)后,在超級(jí)終端輸入步驟2的相關(guān)命令。 4、下面所有的操作必須以命令形式。 1)在虛擬機(jī)中安裝的Linux系統(tǒng)上建立以自己學(xué)號(hào)命名的文件夾,用vi命令新建以學(xué)號(hào)命名的文件,熟悉如何編輯源程序代碼,隨意輸入代碼并保存退出。 圖2-2編輯源程序代碼截圖 圖2-3建立文件夾截圖 2)從PC機(jī)中復(fù)制一個(gè)嵌入式平臺(tái)的可執(zhí)行文件到該文件夾下(也可以用 vi命令新建一個(gè)C語(yǔ)言的文件,之后用arm-linux-gccxxx.c–o xtu得到嵌入式平臺(tái)可以運(yùn)行的xtu文件),并修改其名稱為xtu。 圖2-4建立xtu文件截圖 3把xtu文件通過(guò)cp命令復(fù)制到/tftpboot目錄下,設(shè)置好開(kāi)發(fā)板的ip。 圖2-5 Ip設(shè)置截圖 設(shè)置好PC中Linux的ip,在嵌入式平臺(tái)通過(guò)串口輸入tftp命令從PC上的 Linux下載xtu文件到嵌入式開(kāi)發(fā)實(shí)驗(yàn)箱平臺(tái)中,在嵌入式平臺(tái)上用chmod 777 xtu更改文件權(quán)限為可執(zhí)行權(quán)限,運(yùn)行xtu程序,并查看運(yùn)行結(jié)果。 圖2-6 下載文件截圖 圖2-7下載文件截圖 三實(shí)驗(yàn)思考 1、比較Linux命令與DOS命令的異同。 Linux是免費(fèi)的系統(tǒng),與windows相比具有可靠、穩(wěn)定、速度快等優(yōu)點(diǎn),且擁有豐富的根據(jù)Linux版本改進(jìn)的強(qiáng)大功能。啟動(dòng): 作為操作系統(tǒng)本身,Linux在啟動(dòng)和退出時(shí)所作的工作要比DOS多得多,可以通過(guò)按下Ctrl+Alt+Del三鍵進(jìn)行熱啟動(dòng)。不同的是Linux啟動(dòng)到最后時(shí),需要進(jìn)行登錄。下面是一個(gè)典型的登錄過(guò)程: ??RedHat Linux release 5.1 Kernel 2.0.32 on an i686 login: 你鍵入:root [root@localhost root]#_ 常用命令: 2、注意理解宿主機(jī)/目標(biāo)機(jī)開(kāi)發(fā)模式,PC機(jī)是宿主機(jī),嵌入式平臺(tái)是目標(biāo)機(jī),未來(lái)的開(kāi)發(fā)工作是在PC機(jī)中開(kāi)發(fā),目標(biāo)機(jī)中運(yùn)行并驗(yàn)證。 交叉開(kāi)發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境,它與運(yùn)行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采用宿主機(jī)/目標(biāo)機(jī)模式。宿主機(jī)(host)一般采用一臺(tái)通用計(jì)算機(jī)(如PC機(jī)或者工作站),它通過(guò)串口(Serial)或者以太網(wǎng)(Ethernet)接口與目標(biāo)機(jī)通信。宿主機(jī)的軟硬件資源比較豐富,不但包括功能強(qiáng)大的操作系統(tǒng)(如 Windows 和 Linux),而且還有各種各樣優(yōu)秀的開(kāi)發(fā)工具(如WindRiver的Tornado、Microsoft的Embedded Visual C++等),能夠大大 提高嵌入式應(yīng)用軟件的開(kāi)發(fā)速度和效率。目標(biāo)機(jī)(target)一般在嵌入式應(yīng)用軟件的開(kāi)發(fā)和調(diào)試期間使用,用來(lái)區(qū)別與嵌入式系統(tǒng)通信的宿主機(jī)。目標(biāo)機(jī)可以是嵌入式應(yīng)用軟件的實(shí)際運(yùn)行環(huán)境,也可以是能夠替代實(shí)際運(yùn)行環(huán)境的仿真系統(tǒng),但軟硬件資源通常都比較有限。嵌入式系統(tǒng)的交叉開(kāi)發(fā)環(huán)境一般包括交叉編譯器、交叉調(diào)試器和系統(tǒng)仿真器(Emulator),其中交叉編譯器用于在宿主機(jī)上生成能在目標(biāo)機(jī)上運(yùn)行的代碼,而交叉調(diào)試器和系統(tǒng)仿真器則用于在宿主機(jī)與目標(biāo)機(jī)間完成嵌入式軟件的調(diào)試。 四實(shí)驗(yàn)心得 通過(guò)本次實(shí)驗(yàn)了解了linux的基本命令,如:ls,cd,mkdir,rmdir,ifconfig,mount,chmod,vi,cp等等,特別是ls,cd,vi等命令比較重要,在以后的實(shí)驗(yàn)中會(huì)經(jīng)常用到。熟悉了嵌入式開(kāi)發(fā)平臺(tái)部件,了解宿主機(jī)/目標(biāo)機(jī)開(kāi)發(fā)模式。 在嵌入式試驗(yàn)中使用linux系統(tǒng)是第一次用,一開(kāi)始對(duì)linux系統(tǒng)的命令以和工具的操作都很陌生,只會(huì)部分命令的操作,操作起來(lái)非常慢。在實(shí)驗(yàn)中一個(gè)整體的流程也不是很熟悉,過(guò)程中遇到的很多小問(wèn)題都不會(huì)解決。浪費(fèi)了很多時(shí)間在實(shí)驗(yàn)操作上,同時(shí)實(shí)驗(yàn)室的機(jī)器有部分的壞的,導(dǎo)致做到后邊無(wú)法繼續(xù)完成,只能換機(jī)器。但是最后在助教和同學(xué)的幫助下,我還是完成了這個(gè)實(shí)驗(yàn)。在這個(gè)過(guò)程中,我覺(jué)得個(gè)人的態(tài)度很重要,不管我們以前有沒(méi)有接觸過(guò)這個(gè)知識(shí),我們都應(yīng)該抱著一顆積極的心去了解它、學(xué)習(xí)它,不能因?yàn)樗吧团懦?。并且在做?shí)驗(yàn)時(shí),不管遇到什么問(wèn)題以及困難,我們都應(yīng)該要有耐心,心平氣和的去請(qǐng)教別人,直到搞懂所有問(wèn)題。尤其做到后邊遇到問(wèn)題不要心急,把整個(gè)流程一步步的搞懂,再操作起來(lái)就會(huì)容易些。 實(shí) 驗(yàn) 報(bào) 告 實(shí)驗(yàn)課程 數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)項(xiàng)目 實(shí)驗(yàn) 二、順序表的基本操作 實(shí)驗(yàn)地點(diǎn) 指導(dǎo)教師 班 級(jí) 學(xué)生姓名 學(xué) 號(hào) 教師評(píng)分 日 期 浙江傳媒學(xué)院實(shí)驗(yàn)報(bào)告 一、實(shí)驗(yàn)?zāi)康?/p> 1、掌握線性表的順序存儲(chǔ)結(jié)構(gòu); 2、掌握順序表及其基本操作的實(shí)現(xiàn); 3、掌握數(shù)據(jù)結(jié)構(gòu)及算法的程序?qū)崿F(xiàn)的基本方法。 二、實(shí)驗(yàn)設(shè)備 1.安裝有WinXP的PC一臺(tái); 2.安裝有軟件VC6或者Visual Studio2005。 三、實(shí)驗(yàn)內(nèi)容 1、建立含有若干個(gè)元素的順序表; 2、對(duì)已建立的順序表實(shí)現(xiàn)插入、刪除、查找等基本操作; 3、對(duì)兩個(gè)順序表進(jìn)行合并操作。 四、實(shí)驗(yàn)步驟 1.根據(jù)下面的表格,定義一個(gè)表示數(shù)據(jù)元素的結(jié)構(gòu)體。 2.根據(jù)教材的內(nèi)容,定義順序表的結(jié)構(gòu)體。 3.根據(jù)教材的內(nèi)容,編寫代碼,實(shí)現(xiàn)順序表的下列函數(shù)。 浙江傳媒學(xué)院實(shí)驗(yàn)報(bào)告 4.定義數(shù)據(jù)元素輸入函數(shù)如下。請(qǐng)完善代碼。 5.定義順序表的創(chuàng)建函數(shù)如下,請(qǐng)完善代碼。 6.定義數(shù)據(jù)元素的輸出函數(shù)如下,請(qǐng)完善代碼。 7.定義main函數(shù),要求完成如下功能。 A.定義三個(gè)順序表分別為list1, list2,list3; B.初始化兩個(gè)順序表list1和list2;C.輸入順序表list1; 浙江傳媒學(xué)院實(shí)驗(yàn)報(bào)告 D.輸入list2;E.合并list1和list2到list3中; F.刪除list3中的 實(shí)驗(yàn)一 Linux的基本操作 姓名: 江振明 學(xué)號(hào):2010142016 時(shí)間:2013-04-13 地點(diǎn):工西4樓 目的: 1熟悉Linux 基本命令與文件目錄系統(tǒng)全屏幕編輯器的使用 Shell 腳本編程實(shí)驗(yàn) 4.Makefile 設(shè)備:PC機(jī),虛擬機(jī)Linux系統(tǒng), 一個(gè)U盤 實(shí)驗(yàn)內(nèi)容: 一.完成下列操作,并將執(zhí)行過(guò)程和運(yùn)行結(jié)果附上。 1)建立目錄 /home/學(xué)號(hào) 實(shí)驗(yàn)結(jié)果:已在/home 目錄下新建了目錄/2010142016-2010142007。 2)將/arm2410cl/exp/basic/01_hello的目錄及目錄下的內(nèi)容,拷貝到 /home/學(xué)號(hào) 下面 3)查看拷貝到/home/學(xué)號(hào)下的文件的屬性 4)更改文件名,將文件hello.c 的名字改為 helloworld.c.5)在/mnt下建立目錄usb 6)將u盤掛載到/mnt/usb, 察看u盤內(nèi)容。(具體步驟如下,需要進(jìn)行適當(dāng)?shù)匦薷模?fdisk –l ;察看u盤的設(shè)備名 #mount /dev/XXXX /mnt/usb (說(shuō)明xxx,為u盤的設(shè)備名,根據(jù)fdisk-l顯示的內(nèi)容填寫) # ls /mnt/usb 7)將u盤的某個(gè)文件復(fù)制到/home/學(xué)號(hào) 8)給虛擬機(jī)pc-linux系統(tǒng)設(shè)置網(wǎng)絡(luò)地址192.168.1.2,察看網(wǎng)絡(luò)地址 先查看pc-linux系統(tǒng)的網(wǎng)絡(luò)地址:為192.168.199.129 然后更改設(shè)置pc-linux系統(tǒng)設(shè)置網(wǎng)絡(luò)地址192.168.1.2,再次查看:已設(shè)置成功。 9)給pc-win機(jī)設(shè)置網(wǎng)絡(luò)地址192.168.1.10,察看網(wǎng)絡(luò)地址 設(shè)置pc-win機(jī)的網(wǎng)絡(luò)地址為:192.168.1.10。 10)查看網(wǎng)絡(luò)是否通暢,再虛擬機(jī)上與 pc-win通信。 網(wǎng)絡(luò)通暢。 11)在pc-win與虛擬機(jī)pc-linux通信。 pc-win與虛擬機(jī)pc-linux通信成功。 12)進(jìn)入/home/學(xué)號(hào)/01_hello目錄下 13)查看 hello.c 文件的內(nèi)容。 在第4)步時(shí)已經(jīng)把hello.c改為helloworld.c,故這里是查看helloworld.c的內(nèi)容。 14)將/home/學(xué)號(hào)/下的文件打包并壓縮 15)將/arm2410cl/gui/tools/arm-linux-gcc-3.4.1.tar.bz2解壓到目錄/opt 下面。 二.練習(xí)(vi)vim的命令, 分別指出每個(gè)命令處于何種模式下。 (1)進(jìn)入”/home/學(xué)號(hào)”目錄 # cd /home/學(xué)號(hào) (2)將文件 “/etc/inittab” 復(fù)制到目錄 “/home/學(xué)號(hào)”目錄下 # cp /etc/inittab./ 先用?cd?命令移到/home/2010142016-2010142007 目錄下,執(zhí)行cp /etc/inittab./ 成功把文件“/etc/inittab” 復(fù)制到目錄 “/home/2010142016-2010142007“下。 (3)使用 vi 打開(kāi) /home/學(xué)號(hào) 目錄下的文件 inittab # vi./inittab (4)設(shè)定行號(hào),指定設(shè)定initdefault 的所在行號(hào) :set nu (底行模式) (5)將光標(biāo)移到該行 (命令行模式) (6)復(fù)制該行內(nèi)容 Yy(7)將光標(biāo)移動(dòng)到最后一行行首 G (8)粘帖復(fù)制行的內(nèi)容 P (9)撤銷第8步的動(dòng)作 U (10)將光標(biāo)移動(dòng)到最后一行的行尾 $ (11)粘帖復(fù)制行的內(nèi)容 P (12)光標(biāo)移動(dòng)到 “ si::sysinit:/etc/rc.d/rc.sysinit” 21G (13)刪除該行 Dd (14)存盤但不退出 :w(底行模式): (15)將光標(biāo)移動(dòng)到行首 1G (16)插入模式下輸入 “Hello ,this is Vi world!” I 并輸入 Hello , this is vi world! (17)返回命令行模式 Esc (18)向下查找字符串 “0:wait” /0:wait (19)再向上查找字符串 “halt” ?halt (20)強(qiáng)制退出Vi,不存盤。 :q! 該實(shí)驗(yàn)的最后的結(jié)果只對(duì) “/home/學(xué)號(hào)/inittab” 增加了一行復(fù)制的內(nèi)容: “ id:5:initdefault” 三 shell 程序的創(chuàng)建與執(zhí)行 1)創(chuàng)建一個(gè)內(nèi)容如下的文件,文件名為datex ,將其存放在/root目錄下 # program datex # show the date in this way echo “Mr.$USER, Today is :” echo ?date? echo Whish you a lucky day! 設(shè)置執(zhí)行權(quán)限 # chmod u+x /root/datex # ls –l /root 執(zhí)行程序 # /root/datex 使用bash命令執(zhí)行程序 # bash /root/datex (在不設(shè)置可執(zhí)行權(quán)限時(shí),可以這樣執(zhí)行) 2).建立一個(gè)歡迎界面的shell程序,文件名為welcom,(函數(shù)的使用)#!/bin/bash #filename : welcome first(){ echo “============================================” echo “Hello!Everyone!Welcom to the Linux World!” echo “============================================” } second(){ echo “*****************************************************” } first second second first 執(zhí)行 # chmod u+x welcome #./welcome 四 Makefile 文件的編寫 1)建立文件。五個(gè)文件分別是main.c、display1.h、display1.c、display2.h、display2.c,具體的代碼如下: # vim main.c #include “stdio.h” int main(int argc,char **argv){ display1(“hello”);display2(“hello”);} #vim display1.h void display1(char *print_str); # vim display2.h void display2(char *print_str); # vim display1.c #include “display1.h” void display1(char *print_str){ printf(“This is display1 print %sn”,print_str);} #vim display2.c #include “display2.h” void display2(char *print_str){ printf(“This is display2 print %sn”,print_str);} (1)如果上述文件在同一個(gè)目錄,請(qǐng)編寫Makefile文件。 #vim Makefile CC=gcc //CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc(交叉編譯)all:main.o display1.o display2.o $(CC)main.o display1.o display2.o-o mains main.o:main.c $(CC)-c main.c-o main.o display1.o:display1.c display1.h $(CC)-c display1.c-o display1.o display2.o:display2.c display2.h $(CC)-c display2.c-o display2.o clean: rm *.o mains (2)用$@, $< ,$^ 簡(jiǎn)化上面的Makefile文件。 (3)執(zhí)行make 五. Linux的編程基礎(chǔ)(附加練習(xí):熟悉Linux進(jìn)程編程控制,看書并閱讀代碼) 從mystu上下載教科書中的 程序源代碼,在Linux環(huán)境下編譯,并運(yùn)行它們。要求閱讀代碼,理解執(zhí)行的結(jié)果。 1)請(qǐng)將u盤掛載到 /mnt/usb 下 2)將u盤上sharedada的內(nèi)容復(fù)制到 /home/學(xué)號(hào)下面 3)分別編譯下列文件并執(zhí)行 forkfun.c ,waitpid.c ,pipe_rw.c, fifo_read.c,fifo_write.c,killfun.c,alarm_pause.c,mysignal.c,sigaction.c ,th_example1.c,mutex.c , cond.c ,sema.c,第三篇:嵌入式linux基本操作實(shí)驗(yàn)一的實(shí)驗(yàn)報(bào)告
第四篇:數(shù)據(jù)結(jié)構(gòu)_實(shí)驗(yàn)2_順序表的基本操作(推薦)
第五篇:實(shí)驗(yàn)一 Linux的基本操作 -