




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
重慶科技學(xué)院學(xué)生實驗報告課程名稱算法與數(shù)據(jù)結(jié)構(gòu)實驗項目名稱棧的實現(xiàn)與應(yīng)用開課院系及實驗室數(shù)理學(xué)院實驗室I217實驗日期10.10學(xué)生姓名馮帥學(xué)號2009443411專業(yè)班級應(yīng)數(shù)09指導(dǎo)教師陳小強實驗成績教師評語:教師簽字:批改時間:一、實驗?zāi)康暮鸵?、掌握棧和隊列的特點,即先進后出與先進先出的原則。2、掌握棧和隊列的順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)及其基本操作,以便在實際問題中靈活運用。3、掌握棧和隊列的基本操作實現(xiàn)方法。二、實驗內(nèi)容1、棧的實現(xiàn):用C語言實現(xiàn)棧,包括類型定義和各種基本運算的實現(xiàn),并在此基礎(chǔ)上設(shè)計一個主程序,測試棧的一些基本運算:(1).初始化(2).入棧(3).出棧(4).取棧頂元素(5).遍歷棧(6).置空棧請根據(jù)下面給出的程序(改進的順序棧),完成這次實驗,并與鏈棧的實現(xiàn)方法相比較:/*Common.h*/#defineTRUE1//邏輯,是#defineFALSE0//邏輯,否#defineOK1//狀態(tài),成功#defineFAILURE0//狀態(tài),未成功#defineERROR-1//狀態(tài),失敗#defineOVERFLOW1//溢出typedefintBOOL;typedefintStatus;/*seqstack.h*/#include<stdio.h>#include<stdlib.h>#include"common.h"#defineLIST_INIT_SIZE80//線性表存儲空間的初始分配量#defineLISTINCREMENT10//線性表存儲空間的分配增量typedefintElemType;//棧typedefstruct{ ElemType*elem;//存儲空間基址 inttop;//棧頂指示 intcurrentsize;//當前分配的長度}SeqStack;/*構(gòu)造一個空的棧*/SeqStack*CreateStack();/*釋放棧分配的空間*/voidDestroyStack(SeqStack*S);/*判空*/intIsEmpty(SeqStack*S);/*入棧*/StatusPush(SeqStack*S,ElemTypee);/*出棧*/StatusPop(SeqStack*S,ElemType*e);/*取棧頂元素*/StatusGetTop(SeqStack*S,ElemType*e);/*遍歷*/voidTraverse(SeqStack*S,void(*visit)(ElemType,int));/*seqstack.c*/#include<stdio.h>#include<stdlib.h>#include"common.h"#include"seqstack.h"/*構(gòu)造一個空的棧*/SeqStack*CreateStack(){ SeqStack*S=(SeqStack*)malloc(sizeof(SeqStack)); if(S==NULL) { exit(OVERFLOW); } S->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(S->elem==NULL) { exit(OVERFLOW); } S->top=-1; S->currentsize=LIST_INIT_SIZE; returnS;}/*釋放棧分配的空間*/voidDestroyStack(SeqStack*S){ if(S!=NULL) { if(S->elem!=NULL) { free(S->elem); } S->elem=NULL; }}/*判空*/intIsEmpty(SeqStack*S){ returnS->top==-1;}/*入棧*/StatusPush(SeqStack*S,ElemTypee){ if(S->top>=S->currentsize)//當前存儲空間已滿,增加分配 { ElemType*newbase=(ElemType*)realloc(S->elem,(S->currentsize+LISTINCREMENT)*sizeof(ElemType)); if(newbase==NULL)//存儲分配失敗 { exit(OVERFLOW); } S->elem=newbase;//新基址 S->currentsize+=LISTINCREMENT;//增加存儲容量 } ++(S->top); S->elem[S->top]=e; returnOK;}/*出棧*/StatusPop(SeqStack*S,ElemType*e){ if(S->top==-1)//空棧 { returnFAILURE; } (*e)=S->elem[S->top]; --(S->top);//表長減1 returnOK;}/*取棧頂元素*/StatusGetTop(SeqStack*S,ElemType*e){ if(S->top==-1)//空棧 { returnFAILURE; } (*e)=S->elem[S->top]; returnOK;}/*遍歷*/voidTraverse(SeqStack*S,void(*visit)(ElemType,int)){ inti; for(i=0;i<=S->top;i++) { (*visit)(S->elem[i],i+1); }}2.利用棧實現(xiàn)數(shù)制轉(zhuǎn)換:在上述棧實現(xiàn)的基礎(chǔ)上,設(shè)計一個算法實現(xiàn)輸入一個10進制整數(shù),輸出相應(yīng)的2進制表示,并利用計算器工具設(shè)計若干測試數(shù)據(jù)后編寫測試代碼進行測試.#include<stdlib.h>//itoa()是這個文件里的庫函數(shù)
#include<iostream>usingnamespacestd;voidChg10To2(intn,charresult[]);
intChg2To10(chara[]);
intNmi(intm,intn);//計算m的n次方
intCheck(charch);intmain()
{
charstr[33]={0};
chardata1[50]={0};
chardata2[50]={0};
charch;
cout<<"華銳學(xué)院C++作業(yè)"<<endl<<"請輸入一個二進制整數(shù):";
cin>>data1;
cout<<"您的輸入是:"<<data1<<endl;
intnum1=Chg2To10(data1);
cout<<"該數(shù)十進制為:"<<num1<<endl<<endl;
cout<<"請輸入一個二進制整數(shù):";
cin>>data2;
cout<<"您的輸入是:"<<data2<<endl;
intnum2=Chg2To10(data2);
cout<<"該數(shù)十進制為:"<<num2<<endl;
intvalue=0;
cout<<"請輸入一個運算符(+-*/):";
cin>>ch;
switch(ch)
{
case'+':
value=num1+num2;
break;
case'-':
value=num1-num2;
break;
case'*':
value=num1*num2;
break;
case'/':
if(num2==0)
{
cout<<"除數(shù)不能為零"<<endl;
system("pause");
return0;
}
value=num1/num2;
break;
default:
cout<<"不支持的運算符"<<endl;
system("pause");
return0;
break;
}
Chg10To2(value,str);
cout<<endl<<"計算結(jié)果為:(十進制):"<<value<<"二進制為:"<<str<<endl;system("pause");
return0;
}
voidChg10To2(intn,charresult[])
{
charstr[33];itoa(n,str,2);//把num轉(zhuǎn)化為二進制數(shù)形式存入str數(shù)組中
strcpy(result,str);
}
intChg2To10(chara[])
{
intn=0;
intiLength=strlen(a);
cout<<iLength<<endl;
for(inti=iLength;i>0;i--)
{
//
cout<<a[i]<<"";
n+=Check(a[i-1])*Nmi(2,iLength-i);
}
returnn;
}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國耐磨熱電阻數(shù)據(jù)監(jiān)測研究報告
- 二零二五年度家庭資產(chǎn)保全與分配協(xié)議
- 二零二五年度金融理財產(chǎn)品解除三方協(xié)議依據(jù)說明
- 2025年度智能家居系統(tǒng)樣機試用及服務(wù)協(xié)議
- 二零二五年度個人房屋租賃與物業(yè)托管服務(wù)協(xié)議
- 2025年度智能家電研發(fā)股東入股合作協(xié)議
- 二零二五年度美容院商標轉(zhuǎn)讓使用許可合同
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)園委托經(jīng)營協(xié)議
- 2025年度紀錄片拍攝與制作合同書
- 二零二五年度貨車車輛轉(zhuǎn)讓與運輸保險合同
- 電網(wǎng)工程設(shè)備材料信息參考價(2024年第四季度)
- 2025年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 部編人教版四年級下冊道德與法治全冊教案
- 2024年湖南鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析word版
- 健康保險學(xué)PPT完整全套教學(xué)課件
- 大學(xué)生心理健康教育高職PPT完整全套教學(xué)課件
- 旅游資源規(guī)劃與開發(fā)實訓(xùn)指導(dǎo)書
- 立體幾何專題:距離和角
- DBJ-T01-43-2003_(北京)通用家庭居室裝飾工程質(zhì)量驗收標準
- 16949客戶滿意度調(diào)查分析報告
- 生產(chǎn)線外包方案
評論
0/150
提交評論