第一篇:算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)冊
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊
課程名稱:
學(xué)生學(xué)號:
所屬院部:
(理工類)
算法與數(shù)據(jù)結(jié)構(gòu) 專業(yè)班級:
學(xué)生姓名:
指導(dǎo)教師: 14 ——20 15 學(xué)年 第 二 學(xué)期
金陵科技學(xué)院教務(wù)處制
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)報(bào)告書寫要求
實(shí)驗(yàn)報(bào)告原則上要求學(xué)生手寫,要求書寫工整。若因課程特點(diǎn)需打印的,要遵照以下字體、字號、間距等的具體要求。紙張一律采用A4的紙張。
實(shí)驗(yàn)報(bào)告書寫說明
實(shí)驗(yàn)報(bào)告中一至四項(xiàng)內(nèi)容為必填項(xiàng),包括實(shí)驗(yàn)?zāi)康暮鸵?;?shí)驗(yàn)儀器和設(shè)備;實(shí)驗(yàn)內(nèi)容與過程;實(shí)驗(yàn)結(jié)果與分析。各院部可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。
填寫注意事項(xiàng)
(1)細(xì)致觀察,及時、準(zhǔn)確、如實(shí)記錄。(2)準(zhǔn)確說明,層次清晰。
(3)盡量采用專用術(shù)語來說明事物。
(4)外文、符號、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。
實(shí)驗(yàn)報(bào)告批改說明
實(shí)驗(yàn)報(bào)告的批改要及時、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績采用百分制,具體評分標(biāo)準(zhǔn)由各院部自行制定。
實(shí)驗(yàn)報(bào)告裝訂要求
實(shí)驗(yàn)批改完畢后,任課老師將每門課程的每個實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)報(bào)告以自然班為單位、按學(xué)號升序排列,裝訂成冊,并附上一份該門課程的實(shí)驗(yàn)大綱。
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)項(xiàng)目名稱: 順序表 實(shí)驗(yàn)學(xué)時: 2 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績: 批改教師: 批改時間:
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)1 順序表
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
掌握順序表的定位、插入、刪除等操作。
二、實(shí)驗(yàn)儀器和設(shè)備
Turbo C 2.0
三、實(shí)驗(yàn)內(nèi)容與過程(含程序清單及流程圖)
1、必做題
(1)編寫程序建立一個順序表,并逐個輸出順序表中所有數(shù)據(jù)元素的值。編寫主函數(shù)測試結(jié)果。
(2)編寫順序表定位操作子函數(shù),在順序表中查找是否存在數(shù)據(jù)元素x。如果存在,返回順序表中和x值相等的第1個數(shù)據(jù)元素的序號(序號從0開始編號);如果不存在,返回-1。編寫主函數(shù)測試結(jié)果。(3)在遞增有序的順序表中插入一個新結(jié)點(diǎn)x,保持順序表的有序性。
解題思路:首先查找插入的位置,再移位,最后進(jìn)行插入操作;從第一個元素開始找到第一個大于該新結(jié)點(diǎn)值x的元素位置i即為插入位置;然后將從表尾開始依次將元素后移一個位置直至元素i;最后將新結(jié)點(diǎn)x插入到i位置。
(4)刪除順序表中所有等于X的數(shù)據(jù)元素。
2、選做題
(5)已知兩個順序表A和B按元素值遞增有序排列,要求寫一算法實(shí)現(xiàn)將A和B歸并成一個按元素值遞減有序排列的順序表(允許表中含有值相同的元素)。
程序清單:
1、(1)#include
datatype a[maxsize];
int size;}sequence_list;sequence_list mylist;void display(sequence_list slt)
金陵科技學(xué)院實(shí)驗(yàn)報(bào)告
{
int i;
if(slt.size==0)
printf(“n 順表表是空的”);
else
for(i=0;i printf(“%5d”,slt.a[i]);} void init(sequence_list *slt){ slt->size=0;} void main(){ int i,number;init(&mylist);printf(“順序表是空的請建立順序表!”);printf(“n”);printf(“請輸入順序表中的元素個數(shù)!n”);scanf(“%d”,&number);mylist.size=number;for(i=0;i scanf(“%d”,&mylist.a[i]);} }(2)#include datatype a[maxsize]; int size;}sequence_list;sequence_list mylist;void display(sequence_list slt){ int i;display(mylist);printf(“n”); 金陵科技學(xué)院實(shí)驗(yàn)報(bào)告 if(slt.size==0) printf(“n 順表表是空的”); else for(i=0;i printf(“%5d”,slt.a[i]);} void init(sequence_list *slt){ slt->size=0;} int find(sequence_list *slt,int x){ int i,a;for(i=0;i if(x==slt->a[i]) { a=i; break; } } if(i!=slt->size) return a; else return-1;} void main(){ int i,number,a,b;init(&mylist);printf(“順序表是空的請建立順序表!”);printf(“n”);printf(“請輸入順序表中的元素個數(shù)!n”);scanf(“%d”,&number);mylist.size=number;for(i=0;i scanf(“%d”,&mylist.a[i]);} display(mylist);printf(“n”);printf(“輸入要查找的數(shù):”);scanf(“%d”,&a);b=find(&mylist,a); 金陵科技學(xué)院實(shí)驗(yàn)報(bào)告 } if(b!=-1){ printf(“順序表的下標(biāo)為:%dn”,b);} else printf(“can not be found!”);(3)#include for(i=0;i for(j=i+1;j { if(slt->a[i]>slt->a[j]) { temp=slt->a[i]; slt->a[i]=slt->a[j]; 金陵科技學(xué)院實(shí)驗(yàn)報(bào)告 slt->a[j]=temp; } } } } void append(sequence_list *slt,int x){ slt->a[slt->size]=x;slt->size++;sort(&mylist);} void main(){ int i,number,x;init(&mylist);printf(“順序表是空的請建立順序表!”);printf(“n”);printf(“請輸入順序表中的元素個數(shù)!n”);scanf(“%d”,&number);mylist.size=number;for(i=0;i scanf(“%d”,&mylist.a[i]);} display(mylist);sort(&mylist);printf(“n”);display(mylist);printf(“n”);printf(“輸入要插入的元素:”);printf(“n”);scanf(“%d”,&x);append(&mylist,x);display(mylist);printf(“n”);}(4)#include typedef int datatype;typedef struct 金陵科技學(xué)院實(shí)驗(yàn)報(bào)告 { datatype a[maxsize];int size;}sequence_list;sequence_list mylist;void display(sequence_list slt){ int i;if(slt.size == 0) printf(“n 順表表是空的”);else for(i = 0;i printf(“%5d”, slt.a[i]);} void init(sequence_list *slt){ slt->size = 0;} void sort(sequence_list *slt){ int i, j, temp;//交換法排序 for(i = 0;i for(j = i + 1;j { if(slt->a[i]>slt->a[j]) { temp = slt->a[i]; slt->a[i] = slt->a[j]; slt->a[j] = temp; } } } } void del(sequence_list *slt, int x){ int m[maxsize];int i, n = 0, j, a = 0;for(i = 0;i if(slt->a[i]!= x) { 金陵科技學(xué)院實(shí)驗(yàn)報(bào)告 m[n++] = slt->a[i]; } else a++; } slt->size = slt->size1, from, to, denpend_on);//先將初始塔的前n-1個盤子借助目的塔移動到借用塔上 move(n, from, to);//將剩下的一個盤子移動到目的塔上 hanoi(n1);} int IsPalindrome(char * str){ int len = StrLen(str);int i = 0;for(;i if(str[i]!= str[len1])return 0;} return 1;} void main(){ char * str =(char *)malloc(INIT_SIZE * sizeof(char));char ch;int i = 0;//字符串當(dāng)前字符數(shù) int len = INIT_SIZE;//字符串空間大小 while(ch = getchar()){ // 循環(huán)錄入字符串 if(ch == '@'){ ///如果按回車鍵,則結(jié)束 str[i] = '