版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323.學(xué)習(xí)幫手.2015-2016學(xué)年第二學(xué)期《算法與數(shù)據(jù)結(jié)構(gòu)》課程實(shí)驗(yàn)報(bào)告專業(yè)軟件工程學(xué)生姓名成曉偉班級(jí)軟件141學(xué)號(hào)1410075094實(shí)驗(yàn)學(xué)時(shí)16實(shí)驗(yàn)教師徐秀芳信息工程學(xué)院算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第1頁(yè)。
算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第1頁(yè)。實(shí)驗(yàn)一單鏈表的基本操作一、實(shí)驗(yàn)?zāi)康?.熟悉C語(yǔ)言上機(jī)環(huán)境,進(jìn)一步掌握C語(yǔ)言的基本結(jié)構(gòu)及特點(diǎn)。2.掌握線性表的各種物理存儲(chǔ)表示和C語(yǔ)言實(shí)現(xiàn)。3.掌握單鏈表的各種主要操作的C語(yǔ)言實(shí)現(xiàn)。4.通過(guò)實(shí)驗(yàn)理解線性表中的單鏈表存儲(chǔ)表示與實(shí)現(xiàn)。二、主要儀器及耗材普通計(jì)算機(jī)三、實(shí)驗(yàn)內(nèi)容與要求1、用C語(yǔ)言編寫(xiě)一個(gè)單鏈表基本操作測(cè)試程序。(1)初始化單鏈表(2)創(chuàng)建單鏈表(3)求單鏈表長(zhǎng)度(4)輸出單鏈表中每一個(gè)結(jié)點(diǎn)元素(5)指定位置插入某個(gè)元素(6)查找第i個(gè)結(jié)點(diǎn)元素的值(7)查找值為e的結(jié)點(diǎn),并返回該結(jié)點(diǎn)指針(8)刪除第i個(gè)結(jié)點(diǎn)(9)銷毀單鏈表2、實(shí)驗(yàn)要求(1)程序中用戶可以選擇上述基本操作。程序啟動(dòng)后,在屏幕上可以菜單形式顯示不同功能,當(dāng)按下不同數(shù)字后完成指定的功能,按其他鍵,則顯示錯(cuò)誤后重新選擇。(2)要求用線性表的順序存儲(chǔ)結(jié)構(gòu),帶頭結(jié)點(diǎn)的單鏈表存儲(chǔ)結(jié)構(gòu)分別實(shí)現(xiàn)。(3)主函數(shù)實(shí)現(xiàn)對(duì)基本操作功能的調(diào)用。3、主要代碼(1)初始化單鏈表LinkList*InitList(){//創(chuàng)建一個(gè)空鏈表,初始化線性表 LinkList*L; L=(LinkList*)malloc(sizeof(LinkList)); L->next=NULL; returnL;}算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第2頁(yè)。(2)創(chuàng)建單鏈表//頭插法voidCreateListF(LinkList*L){ LinkList*s; inti=1,a=0; while(1){ printf("輸入第%d個(gè)元素(0表示終止)",i++); scanf("%d",&a); if(a==0) break; s=(LinkList*)malloc(sizeof(LinkList)); s->data=a; s->next=L->next; L->next=s; }}(3)求鏈表長(zhǎng)度intListLength(LinkList*L){//求鏈表長(zhǎng)度intn=0;LinkList*p=L;while(p->next!=NULL){ p=p->next; n++;}return(n);}(4)在指定位置插入元素intInsertList(LinkList*L,inti,ElemTypee){ LinkList*p=L,*s; intj=0; while(p!=NULL&&j<i-1){ p=p->next; j++; }//找出要插入的位置的前一個(gè)位置 if(p==NULL){ return0; }算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第3頁(yè)。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第3頁(yè)。 s=(LinkList*)malloc(sizeof(LinkList)); s->data=e; s->next=p->next; p->next=s; return1; }}(5)輸出鏈表voidDispList(LinkList*L){//輸出鏈表 LinkList*p=L->next; while(p!=NULL) { printf("%d",p->data); p=p->next; } printf("\n");}(6)查找鏈表中指定元素intGetElem(LinkList*L,inti){//查找鏈表中指定元素 LinkList*p=L; intj=0; while(j<i&&p!=NULL){ j++; p=p->next; } if(p==NULL){ return0; } else{ returnp->data; }}(7)查找值是e的結(jié)點(diǎn)并返回該指針LinkList*LocateElem(LinkList*L,ElemTypee){ //查找值是e的結(jié)點(diǎn)并返回該指針 inti=1; LinkList*p=L;算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第4頁(yè)。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第4頁(yè)。 { if(p->data==e)returnp; } if(p==NULL){ returnNULL; }}(8)刪除元素intListDelete(LinkList*L,inti,ElemType*e){//刪除元素 LinkList*p=L,*q; intj=0; while(p!=NULL&&j<i-1){ p=p->next; j++; }//找到要?jiǎng)h除元素地址的前一個(gè)地址 if(p==NULL) {return0;}//不能刪除 else{ q=p->next; *e=q->data; p->next=q->next; free(q);//刪除成功 return1; }}(9)銷毀鏈表voidDestroyList(LinkList*L){//銷毀鏈表 LinkList*pre=L,*p=L->next; while(p!=NULL) { free(pre); pre=p; p=pre->next; } free(pre);}算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第5頁(yè)?!璵ain函數(shù):intmain(){ LinkList*L; ElemTypee; inti; L=InitList(); CreateListF(L); DispList(L); printf("輸入要查找的元素位置:\n"); scanf("%d",&i); e=GetElem(L,i); printf("%d\n",e); printf("單鏈表長(zhǎng)度為:%d\n",ListLength(L)); printf("輸入要?jiǎng)h除元素的位置:"); scanf("%d",&i); if(i>ListLength(L)) { printf("超出范圍重新輸入"); scanf("%d",&i); } if(ListDelete(L,i,&e)==0){ printf("未找到元素\n"); } elseDispList(L); printf("輸入插入元素的位置和值:"); scanf("%d%d",&i,&e);InsertList(L,i,e); DispList(L);return0;算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第6頁(yè)。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第6頁(yè)。4、測(cè)試數(shù)據(jù)及測(cè)試結(jié)果輸入:2356122845輸出:四、注意事項(xiàng)1、存儲(chǔ)結(jié)構(gòu)定義和基本操作盡可能用頭文件實(shí)現(xiàn)。2、采用縮進(jìn)格式,加足夠多的注釋。3、注意循環(huán)條件、邊界條件等。4、善于發(fā)現(xiàn)問(wèn)題、分析問(wèn)題、解決問(wèn)題,并總結(jié)思考。5、對(duì)于算法描述及實(shí)現(xiàn)完全理解。五、拓展提高1、若L為帶頭結(jié)點(diǎn)的單鏈表,刪除最大值結(jié)點(diǎn)2、將兩個(gè)單鏈表合并為一個(gè)單鏈表算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第7頁(yè)。實(shí)驗(yàn)二循環(huán)鏈表的基本操作一、實(shí)驗(yàn)?zāi)康氖炀氄莆站€性表的基本操作在鏈?zhǔn)窖h(huán)存儲(chǔ)結(jié)構(gòu)上的實(shí)現(xiàn)。二、主要儀器及耗材普通計(jì)算機(jī)三、實(shí)驗(yàn)內(nèi)容1、在上一次單鏈表基本操作的基礎(chǔ)上,修改程序,將其改為單循環(huán)鏈表,并實(shí)現(xiàn)相關(guān)操作。(1)初始化單循環(huán)鏈表(2)創(chuàng)建單循環(huán)鏈表(3)求單循環(huán)鏈表長(zhǎng)度(4)輸出單循環(huán)鏈表中每一個(gè)結(jié)點(diǎn)元素(5)指定位置插入某個(gè)元素(6)查找第i個(gè)結(jié)點(diǎn)元素的值(7)查找值為e的結(jié)點(diǎn),并返回該結(jié)點(diǎn)指針(8)刪除第i個(gè)結(jié)點(diǎn)(9)銷毀單循環(huán)鏈表2、實(shí)驗(yàn)要求(1)程序中用戶可以選擇上述基本操作。程序啟動(dòng)后,在屏幕上可以菜單形式顯示不同功能,當(dāng)按下不同數(shù)字后完成指定的功能,按其他鍵,則顯示錯(cuò)誤后重新選擇。(2)要求用不帶頭結(jié)點(diǎn)的循環(huán)鏈表實(shí)現(xiàn)。(3)具體功能測(cè)試由主函數(shù)實(shí)現(xiàn)。3、主要代碼(1)初始化單循環(huán)鏈表voidinitLinkList(LinkListL)//初始化循環(huán)單鏈表{ L=(LinkList)malloc(sizeof(LNode)); L->next=L;//創(chuàng)建一個(gè)空表}(2)創(chuàng)建單循環(huán)鏈表LinkListcreat(LinkListL)//給循環(huán)鏈表賦值{算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第8頁(yè)。 LinkL算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第8頁(yè)。 intN,i=0; //printf("請(qǐng)輸入第%d個(gè)值:",++i); while(1) { printf("請(qǐng)輸入第%d個(gè)值:",++i); scanf("%d",&N);//輸入節(jié)點(diǎn)的值 if(N==0)//以0為結(jié)尾 { break; } if(i==1)//當(dāng)只有一個(gè)節(jié)點(diǎn)時(shí) { p=(LinkList)malloc(sizeof(LNode));//給p節(jié)點(diǎn)分配內(nèi)存空間 p->date=N; p->next=NULL; q=p; } else//當(dāng)節(jié)點(diǎn)不為1時(shí) { r=(LinkList)malloc(sizeof(LNode)); r->date=N; r->next=NULL; q->next=r; q=r;// } } if(q!=NULL) { q->next=p;//將尾節(jié)點(diǎn)指向頭節(jié)點(diǎn)完成循環(huán) } L=p; returnL;//返回頭指針}(3)打印循環(huán)鏈表voidprint(LinkListL)//打印循環(huán)鏈表{ LinkListp;算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第9頁(yè)。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第9頁(yè)。 p=L; //printf("**\n"); if(p==NULL)//當(dāng)鏈表尾空表時(shí) { printf("這是一個(gè)空表\n"); } while(p->next!=L)//只有當(dāng)p節(jié)點(diǎn)不為尾節(jié)點(diǎn)是打印節(jié)點(diǎn)中的數(shù)據(jù)域 { //printf("**\n"); printf("%d",p->date); p=p->next; } printf("%d\n",p->date);//打印尾節(jié)點(diǎn)中的數(shù)據(jù)}(4)求鏈表的長(zhǎng)度intlength(LinkListL)//求鏈表的長(zhǎng)度{ LinkListp; //printf("**\n"); intn=1; //printf("**\n"); p=L; //printf("**\n"); while(p->next!=L)//當(dāng)p節(jié)點(diǎn)不為尾節(jié)點(diǎn)時(shí)計(jì)數(shù) { n++; //printf("**\n"); p=p->next; } returnn;//返回鏈表長(zhǎng)度 //printf("%d****\n",n);}(5)刪除指定位置的節(jié)點(diǎn)LinkListdel(LinkListL,intflag)//刪除指定位置的節(jié)點(diǎn){ LinkListp,q; inti;算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第10頁(yè)。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第10頁(yè)。 q=L->next; //inti=1; if(flag==1)//當(dāng)刪除節(jié)點(diǎn)為頭結(jié)點(diǎn)時(shí) { while(q->next!=L)//讓p節(jié)點(diǎn)為尾節(jié)點(diǎn) { q=q->next; } L=p->next;//頭結(jié)點(diǎn)為L(zhǎng)->NEXT節(jié)點(diǎn) q->next=L;//讓尾節(jié)點(diǎn)指向新的頭結(jié)點(diǎn) free(p);//釋放p } else { for(i=1;i<flag-1;i++)//讓p和q節(jié)點(diǎn)到達(dá)指定位置 { p=p->next; q=q->next; } p->next=q->next; free(q);//刪除q節(jié)點(diǎn) } returnL;//返回頭指針}(6)查找第i個(gè)結(jié)點(diǎn)元素的值intsearch1(LinkListL,intflag)//按照節(jié)點(diǎn)的位置返回節(jié)點(diǎn)中的數(shù)據(jù){ LinkListp; inti; p=L; for(i=1;i<flag;i++)//循環(huán)找到節(jié)點(diǎn)的位置 { p=p->next; } returnp->date;//返回節(jié)點(diǎn)的數(shù)據(jù)}算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第11頁(yè)。(7)查找值為e算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第11頁(yè)。intsearch2(LinkListL,intdata)//按照數(shù)據(jù)來(lái)查找節(jié)點(diǎn)的位置{ LinkListp; inti=1; p=L; while(1) { if(p->date==data)//當(dāng)查找到數(shù)據(jù)域與查找的數(shù)據(jù)相同是跳出循環(huán) { break; } else { i++; p=p->next; } } returni;}(8)刪除第i個(gè)結(jié)點(diǎn)LinkListinsert(LinkListL,intfalg,intdata)//指定位置插入元素{ LinkListp,s; inti; p=L; s=(LinkList)malloc(sizeof(LNode)); for(i=1;i<falg;i++)//尋找位置 { p=p->next; } s->date=data;//將data賦值給s節(jié)點(diǎn) s->next=p->next; p->next=s; returnL;}(9)銷毀單循環(huán)鏈表LinkListdestroy(LinkListL)//銷毀循環(huán)鏈表算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第12頁(yè)。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第12頁(yè)。 LinkListp,q; p=L->next; while(p!=L) { q=p->next; free(p); p=q; } free(L); L=NULL; returnL;}……main函數(shù):intmain(){ LinkListL=NULL; intm,k,Case,Length,DAT1,flag,P,e; printf("**1.創(chuàng)建一個(gè)循環(huán)鏈表**\n"); printf("**2.打印所創(chuàng)建的循環(huán)鏈表**\n"); printf("**3.插入節(jié)點(diǎn)**\n"); printf("**4.刪除節(jié)點(diǎn)**\n"); printf("**5.求循環(huán)的長(zhǎng)度**\n"); printf("**6.查找第i節(jié)點(diǎn)**\n"); printf("**7.查找某個(gè)值得節(jié)點(diǎn)**\n"); printf("**8.銷毀鏈表**\n"); printf("**9.刪除最大節(jié)點(diǎn)**\n"); printf("**10.退出程序**\n"); for(;;){ printf("請(qǐng)輸入操作的序號(hào)\n"); scanf("%d",&Case); switch(Case) { case1:initLinkList(L); L=creat(L); break;算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第13頁(yè)。 case2:print(L);算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第13頁(yè)。 break; case3:printf("請(qǐng)輸入需要插入的位置(之后)及其數(shù)據(jù)\n"); scanf("%d%d",&m,&k); L=insert(L,m,k); print(L); break; case4:printf("請(qǐng)輸入需要?jiǎng)h除的節(jié)點(diǎn)\n"); scanf("%d",&Case); L=del(L,Case); print(L); //printf("%d",Length); break; case5:Length=length(L); printf("循環(huán)的長(zhǎng)度是%d\n",Length); break; case6:printf("請(qǐng)輸入需要查找的節(jié)點(diǎn)序號(hào):"); scanf("%d",&flag); DAT1=search1(L,flag); printf("所查找的節(jié)點(diǎn)數(shù)據(jù)為%d\n",DAT1); break; case7:printf("輸入需要查找的值\n"); scanf("%d",&e); P=search2(L,e); printf("所查找的位置是%d\n",P); break; case8:L=destroy(L); print(L); break; //case10: case9:exit(0); break; } } return0;}算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第14頁(yè)。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第14頁(yè)。輸入:12345輸出:四、注意事項(xiàng)1、存儲(chǔ)結(jié)構(gòu)定義和基本操作盡可能用頭文件實(shí)現(xiàn)。2、采用縮進(jìn)格式,加足夠多的注釋。3、注意循環(huán)條件、邊界條件等。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第15頁(yè)。五、拓展提高1、雙向鏈表中間結(jié)點(diǎn)P后插入新結(jié)點(diǎn)S的算法;2、刪除雙向鏈表中間結(jié)點(diǎn)P后的結(jié)點(diǎn)Q的算法;算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第16頁(yè)。實(shí)驗(yàn)三棧的基本操作及應(yīng)用一、實(shí)驗(yàn)?zāi)康?、掌握棧的順序表示和基本操作實(shí)現(xiàn);2、熟練掌握棧的基本操作;3、會(huì)用棧解決一些實(shí)際應(yīng)用;4、掌握十進(jìn)制數(shù)轉(zhuǎn)化為N進(jìn)制整數(shù)的工作原理。二、主要儀器及耗材普通計(jì)算機(jī)三、實(shí)驗(yàn)內(nèi)容1、棧的基本運(yùn)算(1)InitStack(SqStack*s)//初始化棧(2)Push(SqStack*s,SElemTypee)//入棧操作(3)pop(SqStack*s,SElemTypee)//出棧操作(4)GetTop(SqStack*s,SElemTypee)//取棧頂元素(5)IsEmpty(SqStack*s)//判斷是否為空(6)GetLength(SqStack*s)//求棧的長(zhǎng)度2、創(chuàng)建一個(gè)長(zhǎng)度為100的順序棧T,每個(gè)數(shù)據(jù)元素的類型為字符型char。編寫(xiě)代碼,利用棧的基本運(yùn)算和順序棧T,正序輸入并存儲(chǔ)26個(gè)英文字母A—Z,然后逆序輸出。3、利用棧的基本運(yùn)算,寫(xiě)出十進(jìn)制轉(zhuǎn)化為二進(jìn)制(八進(jìn)制呢?十六進(jìn)制呢?N進(jìn)制呢?)的具體實(shí)現(xiàn),并輸出。4、實(shí)驗(yàn)要求(1)程序中用戶可以選擇上述基本操作。程序啟動(dòng)后,在屏幕上可以菜單形式顯示不同功能,當(dāng)按下不同數(shù)字后完成指定的功能,按其他鍵,則顯示錯(cuò)誤后重新選擇。(2)要求用不帶頭結(jié)點(diǎn)的循環(huán)鏈表實(shí)現(xiàn)。(3)具體功能測(cè)試由主函數(shù)實(shí)現(xiàn)。5、主要代碼(1)初始化棧voidInitStack(sqStack*s)//初始化棧,構(gòu)造一個(gè)空棧{ s->base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));//動(dòng)態(tài)分配存儲(chǔ)空間 if(!s->base)算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第17頁(yè)。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第17頁(yè)。 s->top=s->base;//??諛?biāo)記 s->stacksize=STACK_INIT_SIZE;}(2)取棧頂元素intGetTop(sqStack*s,ElemTypee)//取棧頂元素{*(s->top)=e; returne;}(3)元素入棧voidpush(sqStack*s,ElemTypee)//元素入棧{if(s->top-s->base>=s->stacksize) { s->base=(ElemType*)realloc(s->base,(s->stacksize+STACK_INIT_SIZE)*sizeof(ElemType));//棧滿,追加存儲(chǔ)空間 if(!s->base) exit(0); } *(s->top)=e;//輸入元素e s->top++;//棧頂指針++}(4)元素出棧voidpop(sqStack*s,ElemType*e)//出棧{if(s->top==s->base)return;// *e=*--(s->top);}(5)求棧的長(zhǎng)度intstacklen(sqStacks)//棧的長(zhǎng)度{return(s.top-s.base);}(6)判斷是否棧空intstackempty(sqStack*s)//判斷是否??账惴ㄅc數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第18頁(yè)。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第18頁(yè)。if(s->top==s->base) return1;else return0;}(7)十進(jìn)制轉(zhuǎn)化為八進(jìn)制voidconversion()//十進(jìn)制轉(zhuǎn)化為八進(jìn)制{sqStacks; intn,t; ElemTypee; InitStack(&s); printf("請(qǐng)輸入正整數(shù):"); scanf("%d",&n); t=n; while(n) { push(&s,n%8); n=n/8; } printf("十進(jìn)制%d轉(zhuǎn)化為八進(jìn)制為:",t); while(!stackempty(&s)) { pop(&s,&e); printf("%d",e); } printf("\n");}(8)二進(jìn)制轉(zhuǎn)化為十進(jìn)制voidBintoDec()//二進(jìn)制轉(zhuǎn)化為十進(jìn)制{ElemTypech; sqStacks; intlen,i,sum=0; InitStack(&s); printf("請(qǐng)輸入二進(jìn)制數(shù),輸入#表示結(jié)束!\n");算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第19頁(yè)。 while(ch!='#') { push(&s,ch); scanf("%c",&ch); } getchar();//清除緩沖區(qū) len=stacklen(s);printf("棧的當(dāng)前容量是:%d\n",len); for(i=0;i<len;i++) { pop(&s,&ch); sum=sum+(ch-48)*pow(2,i); } printf("轉(zhuǎn)化為十進(jìn)制數(shù)是%d\n",sum);}(9)26個(gè)字母逆序輸出voidAZZA()//字母逆序輸出{ElemTypech[26],e; sqStacks; intlen,i; for(i=0;i<26;i++) ch[i]='A'+i; InitStack(&s); for(i=0;i<26;i++) { push(&s,ch[i]); } len=stacklen(s); printf("棧的當(dāng)前容量是:%d\n",len); while(!stackempty(&s)) { pop(&s,&e); printf("%c",e); } printf("\n");}算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第20頁(yè)。……main函數(shù)intmain(){AZZA();printf("\n");BintoDec();printf("\n");conversion();return0;}6、測(cè)試數(shù)據(jù)及測(cè)試結(jié)果輸入:1034輸出:四、注意事項(xiàng)1、存儲(chǔ)結(jié)構(gòu)定義和基本操作盡可能用頭文件實(shí)現(xiàn)。2、注意??蘸蜅M的條件判斷。3、進(jìn)制轉(zhuǎn)換時(shí)余數(shù)的存儲(chǔ)及輸出。五、拓展提高*1、輸入一個(gè)包含’(’和’)’的字符串,檢測(cè)括號(hào)是否匹配(其中括號(hào)中能嵌套括號(hào)),并輸出括號(hào)是否匹配的信息(匹配,缺少左括號(hào),缺少右括號(hào))。*2、輸入一個(gè)整數(shù)表達(dá)式,計(jì)算出其值,然后輸出。(學(xué)習(xí)表達(dá)式的后綴形式及后綴表達(dá)式的計(jì)算方法)算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第21頁(yè)。**3、漢諾塔問(wèn)題求解。算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告25323全文共25頁(yè),當(dāng)前為第21頁(yè)。實(shí)驗(yàn)四隊(duì)列的基本操作及應(yīng)用一、實(shí)驗(yàn)?zāi)康?、會(huì)定義順序隊(duì)列和鏈隊(duì)的結(jié)點(diǎn)類型;2、熟練隊(duì)列的入隊(duì)和出隊(duì)代表的實(shí)際意義;3、掌握兩種存儲(chǔ)結(jié)構(gòu)下隊(duì)列的基本操作:入隊(duì)、出隊(duì)和輸出隊(duì)列等;4、熟悉C語(yǔ)言中函數(shù)的定義和調(diào)用。二、主要儀器及耗材普通計(jì)算機(jī)三、實(shí)驗(yàn)內(nèi)容1、建立隊(duì)列并輸出2、插入元素后輸出隊(duì)列3、刪除元素后輸出隊(duì)列要求:在輸入數(shù)據(jù)的過(guò)程中程序做相應(yīng)的是否繼續(xù)輸入的提示。每個(gè)功能用不同函數(shù)實(shí)現(xiàn)4、實(shí)驗(yàn)要求(1)程序中用戶可以選擇上述基本操作。程序啟動(dòng)后,在屏幕上可以菜單形式顯示不同功能,當(dāng)按下不同數(shù)字后完成指定的功能,按其他鍵,則顯示錯(cuò)誤后重新選擇。(2)要求用不帶頭結(jié)點(diǎn)的循環(huán)鏈表實(shí)現(xiàn)。(3)具體功能測(cè)試由主函數(shù)實(shí)現(xiàn)。5、主要代碼(1)初始化隊(duì)列/*初始化*/voidInitQueue(sqQueue*&q){ q=(sqQueue*)malloc(sizeof(sqQueue));//動(dòng)態(tài)分配存儲(chǔ)空間 q->front=q->rear=0;}/*初始化隊(duì)列,構(gòu)造一個(gè)空隊(duì)列*/(2)判斷隊(duì)列是否為空intQueueEmpty(sqQueue*q){ if(q->rear==q->front) return
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高速公路合同制收費(fèi)員二零二五年度職業(yè)發(fā)展規(guī)劃與培訓(xùn)協(xié)議3篇
- 二零二五年度二手汽車美容與維修合同規(guī)范4篇
- 2025年度城市排水系統(tǒng)承包合同補(bǔ)充協(xié)議4篇
- 二零二五版煤炭行業(yè)節(jié)能減排技術(shù)改造合同4篇
- 二零二五年度文化藝術(shù)品交易-藝術(shù)品讓與擔(dān)保交易協(xié)議4篇
- 基于二零二五年份的商品房廣告發(fā)布合同
- 二零二五年度新能源車輛購(gòu)置民間擔(dān)保服務(wù)合同4篇
- 二零二五版高端二手車交易及認(rèn)證服務(wù)合同范本2篇
- 二零二五版智能地震監(jiān)控系統(tǒng)采購(gòu)合同3篇
- 二零二五年度企業(yè)財(cái)務(wù)部合同管理制度執(zhí)行細(xì)則3篇
- GB/T 33629-2024風(fēng)能發(fā)電系統(tǒng)雷電防護(hù)
- 劍橋國(guó)際少兒英語(yǔ)“第三級(jí)”單詞默寫(xiě)表
- (精心整理)高中生物必修二非選擇題專題訓(xùn)練
- 小學(xué)二年級(jí)100以內(nèi)進(jìn)退位加減法混合運(yùn)算
- 福建省流動(dòng)人口信息登記表
- 市委組織部副部長(zhǎng)任職表態(tài)發(fā)言
- HXD1D客運(yùn)電力機(jī)車轉(zhuǎn)向架培訓(xùn)教材
- 超星爾雅學(xué)習(xí)通【西方文論原典導(dǎo)讀(吉林大學(xué))】章節(jié)測(cè)試附答案
- 【培訓(xùn)教材】外貿(mào)會(huì)計(jì)PPT
- 《門(mén)店運(yùn)營(yíng)管理手冊(cè)》
- 應(yīng)征公民體格檢查表(征兵)
評(píng)論
0/150
提交評(píng)論