【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器_第1頁
【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器_第2頁
【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器_第3頁
【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器_第4頁
【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器東北大學(xué)信息科學(xué)與工程學(xué)院數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告題目十進(jìn)制整數(shù)四則運算計算器課題組長余灝然課題組成員魏嘉張越專業(yè)名稱計算機(jī)科學(xué)與技術(shù)班級計算機(jī)1307指導(dǎo)教師楊雷2015年1月【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第1頁?!緮?shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第1頁。課程設(shè)計任務(wù)書【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第2頁?!緮?shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第2頁。題目:十進(jìn)制整數(shù)四則運算計算器問題描述:由輸入的四則運算表達(dá)式字符串,動態(tài)生成算術(shù)表達(dá)式所對應(yīng)的二叉樹,通過表達(dá)式二叉樹自動求值并輸出。設(shè)計要求:設(shè)計十進(jìn)制整數(shù)四則運算計算器。(1)采用二叉樹、棧等數(shù)據(jù)結(jié)構(gòu)。(2)給定表達(dá)式字符串,生成二叉鏈表的表達(dá)式二叉樹。(3)對表達(dá)式二叉樹采用后序遍歷求值并輸出。(4)可以考慮加入復(fù)數(shù)四則運算功能。(5)其它完善性功能。指導(dǎo)教師簽字:2014年12月28日目錄1課題概述 11.1課題任務(wù) 11.2課題原理 11.3相關(guān)知識 42需求分析 42.1課題調(diào)研 52.2用戶需求分析 53方案設(shè)計 53.1總體功能設(shè)計 53.2數(shù)據(jù)結(jié)構(gòu)設(shè)計 53.3函數(shù)原型設(shè)計 53.4主算法設(shè)計 53.5用戶界面設(shè)計 54方案實現(xiàn) 64.1開發(fā)環(huán)境與工具 64.2程序設(shè)計關(guān)鍵技術(shù) 64.3個人設(shè)計實現(xiàn)(按組員分工)4.3.1余灝然設(shè)計實現(xiàn) 64.3.2魏嘉設(shè)計實現(xiàn) 94.3.3張越設(shè)計實現(xiàn) 115測試與調(diào)試 135.1個人測試(按組員分工) 135.1.1余灝然測試 135.1.2魏嘉測試 165.1.3張越測試 205.2組裝與系統(tǒng)測試 255.3系統(tǒng)運行 256課題總結(jié) 266.1課題評價 266.2團(tuán)隊協(xié)作 266.3個人設(shè)計小結(jié)(按組員分工) 266.3.1余灝然設(shè)計小結(jié) 26【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第3頁。6.3.2魏嘉設(shè)計小結(jié) 27【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第3頁。6.3.3張越設(shè)計小結(jié) 277附錄A課題任務(wù)分工 28A-1課題程序設(shè)計分工 28A-2課題報告分工 29附錄C用戶操作手冊(可選) 30C.1運行環(huán)境說明 30C.2操作說明 30【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第4頁?!緮?shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第4頁。⑶后序遍歷二叉樹求值。4.3個人設(shè)計實現(xiàn)(按組員分工)4.3.1余灝然設(shè)計實現(xiàn)數(shù)據(jù)結(jié)構(gòu)定義和描述:【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第10頁。反轉(zhuǎn)表達(dá)式及轉(zhuǎn)換前綴表達(dá)式:【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第10頁。#include"head.h"#include"fuhao.cpp"#include"iostream"usingnamespacestd;voidturn(Stack&T,chard[max]);voidchange(StackT,Stack&S);voidturn(Stack&T,chard[max])//字符串輸入表達(dá)式且壓棧{ inth,r=0;//h用于重置數(shù)字,r用于計位置 datab; while(1) { if(d[r]=='\0')break; if(In(d[r])) { b.k=2; b.s=d[r++]; Push(T,b); } else { h=0; while(d[r]!='\0') { if(d[r]=='+'||d[r]=='-'||d[r]=='*'||d[r]=='/'||d[r]=='('||d[r]==')')break; h*=10; switch(d[r]) { case'1':h+=1;break; case'2':h+=2;break; case'3':h+=3;break; case'4':h+=4;break; case'5':h+=5;break; case'6':h+=6;break; case'7':h+=7;break; case'8':h+=8;break; case'9':h+=9;break; case'0':h+=0;break; default:cout<<"表達(dá)式有誤!";exit(0); }【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第11頁。 r++;【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第11頁。 } b.k=1; b.i=h; Push(T,b); } }}voidchange(StackT,Stack&S)//轉(zhuǎn)前置表達(dá)式{ StackP; InitStack(P); dataa,b,c; a.k=2;a.s='='; Push(P,a); while(1) { Pop(T,b); if(b.k==2&&b.s=='=')break; if(b.k==1){Push(S,b);continue;} if(b.k==2) { if(b.s==')'){Push(P,b);continue;} if(b.s!='('&&b.s!=')') { while(1) { GetTop(P,c); if(Compare(b.s,c.s)=='>'||Compare(b.s,c.s)=='='){Push(P,b);break;} else{Pop(P,c);Push(S,c);} } } if(b.s=='(') { while(1) { Pop(P,c); if(c.k==2&&c.s==')')break; Push(S,c); } } }【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第12頁。 }【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第12頁。 while(1) { GetTop(P,c); if(c.k==2&&c.s=='=')break; Pop(P,c); Push(S,c); }}4.3.2魏嘉設(shè)計實現(xiàn)符號相關(guān)操作:#include"iostream"usingnamespacestd;charCompare(chara,charb);intIn(charc);intOperate(intb,charx,inta);/*判斷運算的優(yōu)先順序*/charCompare(chara,charb){charc;switch(a){case'+':if(b=='*'||b=='/'||b=='(') c='<'; elsec='>'; break;case'-':if(b=='*'||b=='/'||b=='(') c='<'; elsec='>'; break;case'*':if(b=='(') c='<'; elsec='>'; break;case'/':if(b=='(') c='<'; elsec='>'; break;case'(':if(b==')')c='=';【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第13頁。 elsec='<';【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第13頁。 break;case')':c='>'; break;case'=':if(b=='=') c='='; elsec='<'; break;}returnc;}intIn(charc){ if(c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='=') return1; elsereturn0;}intOperate(intb,charx,inta){ intz; switch(x){ case'+':z=a+b;break; case'-':z=a-b;break; case'*':z=a*b;break; case'/':z=a/b;break; } returnz;}#include"head.h"#include"fuhao.cpp"#include"iostream"usingnamespacestd;voidturn(Stack&T,chard[max]);voidchange(StackT,Stack&S);typedefstructNode{datap;structNode*lchild,*rchild;}Node,*Tree;后序遍歷求值:voidPostOrder(TreeT,Stack&S)//利用遞歸,后序遍歷并求值,T為二叉樹,S為存儲用的?!緮?shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第14頁。{【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第14頁。 dataa,b,c,d; if(T!=NULL) { PostOrder(T->lchild,S); PostOrder(T->rchild,S); c=T->p; if(c.k==1)Push(S,c); if(c.k==2) { Pop(S,b);Pop(S,a); d.k=1;d.i=Operate(b.i,c.s,a.i); Push(S,d); } }}4.3.3張越設(shè)計實現(xiàn)建立二叉鏈表:#include"head.h"#include"fuhao.cpp"#include"iostream"usingnamespacestd;voidturn(Stack&T,chard[max]);voidchange(StackT,Stack&S);typedefstructNode{datap;structNode*lchild,*rchild;}Node,*Tree;intCreatTree(Tree&T,Stack&S)//建立二叉鏈表{ datab,c; Pop(S,b); if(b.k==1) //當(dāng)遇數(shù)字時,在后面補(bǔ)兩個空位,用于建立二叉樹 { c.k=3;Push(S,c);Push(S,c);} if(b.k==3)T=NULL; else {【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第15頁。if(!(T=(Node*)malloc(sizeof(Node))))exit(-1); 【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第15頁。 T->p=b; CreatTree(T->lchild,S); CreatTree(T->rchild,S); }return(1);}棧的創(chuàng)建與操作:#include"iostream"usingnamespacestd;#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10#definemax50typedefstructNdata{ intk;//判斷用k=1:數(shù)字2:符號3:返回,用于二叉樹的建立 inti;//數(shù)字 chars;//符號}data;typedefstructNStack{ data*base; data*top; intstacksize;}Stack;intInitStack(Stack&S){ S.base=(data*)malloc(STACK_INIT_SIZE*sizeof(data)); if(!S.base)exit(0); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return1;}intGetTop(StackS,data&e){ if(S.top==S.base)return0; e=*(S.top-1); return1;}【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第16頁。intPush(Stack&S,datae)【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第16頁。{ if(S.top-S.base>=S.stacksize) { S.base=(data*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(data)); if(!S.base)exit(0); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *(S.top++)=e; return1;}intPop(Stack&S,data&e){ if(S.top==S.base)return0; e=*--S.top; return1;}voidClearStack(Stack&S)//把棧置空,只留棧底{ datae; while(1) { GetTop(S,e); if(e.k==-1)break; Pop(S,e); }}5測試與調(diào)試5.1個人測試(按組員分工)5.1.1余灝然測試#include"head.h"#include"fuhao.cpp"#include"iostream"usingnamespacestd;voidturn(Stack&T,chard[max]);voidchange(StackT,Stack&S);【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第17頁。voidmain()【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第17頁。{ staticchard[max]; StackT,S,P;//T為反轉(zhuǎn)棧,S用于輸出先序表達(dá)式 InitStack(T);InitStack(S);InitStack(P); dataa,b,c; b.k=2;b.s='=';a.k=1; Push(T,b);Push(S,b);Push(P,b); cout<<"請輸入表達(dá)式:"; cin>>d; turn(P,d); cout<<"前綴表達(dá)式:"; while(1) { Pop(P,c); if(c.k==2&&c.s=='=')break; if(c.k==1)cout<<c.i; if(c.k==2)cout<<c.s; } turn(T,d);//反轉(zhuǎn),將棧由棧頂輸出到棧底的順序即為反轉(zhuǎn)順序 change(T,S);//轉(zhuǎn)化成前序表達(dá)式,T為轉(zhuǎn)變前,S為轉(zhuǎn)變后 cout<<endl<<"前綴表達(dá)式:"; while(1) { Pop(S,a); if(a.k==2&&a.s=='=')break; if(a.k==1)cout<<a.i; if(a.k==2)cout<<a.s; } cout<<endl;}voidturn(Stack&T,chard[max])//字符串輸入表達(dá)式且壓棧{ inth,r=0;//h用于重置數(shù)字,r用于計位置 datab; while(1) { if(d[r]=='\0')break; if(In(d[r])) { b.k=2; b.s=d[r++]; Push(T,b);【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第18頁。 }【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第18頁。 else { h=0; while(d[r]!='\0') { if(d[r]=='+'||d[r]=='-'||d[r]=='*'||d[r]=='/'||d[r]=='('||d[r]==')')break; h*=10; switch(d[r]) { case'1':h+=1;break; case'2':h+=2;break; case'3':h+=3;break; case'4':h+=4;break; case'5':h+=5;break; case'6':h+=6;break; case'7':h+=7;break; case'8':h+=8;break; case'9':h+=9;break; case'0':h+=0;break; default:cout<<"表達(dá)式有誤!";exit(0); } r++; } b.k=1; b.i=h; Push(T,b); } }}voidchange(StackT,Stack&S)//轉(zhuǎn)前置表達(dá)式{ StackP; InitStack(P); dataa,b,c; a.k=2;a.s='='; Push(P,a); while(1) { Pop(T,b); if(b.k==2&&b.s=='=')break; if(b.k==1){Push(S,b);continue;}【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第19頁。 if(b.k==2)【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第19頁。 { if(b.s==')'){Push(P,b);continue;} if(b.s!='('&&b.s!=')') { while(1) { GetTop(P,c); if(Compare(b.s,c.s)=='>'||Compare(b.s,c.s)=='='){Push(P,b);break;} else{Pop(P,c);Push(S,c);} } } if(b.s=='(') { while(1) { Pop(P,c); if(c.k==2&&c.s==')')break; Push(S,c); } } } } while(1) { GetTop(P,c); if(c.k==2&&c.s=='=')break; Pop(P,c); Push(S,c); }}測試結(jié)果:5.1.2魏嘉測試【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第20頁。符號相關(guān)操作:【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第20頁。#include"iostream"usingnamespacestd;charCompare(chara,charb);intIn(charc);intOperate(intb,charx,inta);voidmain(){ inti,j,k; chara,b,s; while(1) { cout<<"請選擇操作1.符號優(yōu)先級判斷2.判斷是否是符號3.兩個數(shù)的四則運算:"; cin>>i; if(i==1) { cout<<"請輸入兩個符號:"; cin>>a>>b; s=Compare(a,b); cout<<"優(yōu)先級:"<<s<<endl<<endl; } if(i==2) { cout<<"請輸入一個字符"; cin>>s; if(In(s))cout<<"是運算符"<<endl; elsecout<<"非運算符"<<endl; } if(i==3) { cout<<"請輸入2個數(shù)字:"; cin>>j>>k; cout<<"請選擇加減乘除:"; cin>>s; j=Operate(k,s,j); cout<<"結(jié)果為"<<j<<endl; } }}/*判斷運算的優(yōu)先順序*/【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第21頁。charCompare(chara,charb)【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第21頁。{charc;switch(a){case'+':if(b=='*'||b=='/'||b=='(') c='<'; elsec='>'; break;case'-':if(b=='*'||b=='/'||b=='(') c='<'; elsec='>'; break;case'*':if(b=='(') c='<'; elsec='>'; break;case'/':if(b=='(') c='<'; elsec='>'; break;case'(':if(b==')')c='='; elsec='<'; break;case')':c='>'; break;case'=':if(b=='=') c='='; elsec='<'; break;}returnc;}intIn(charc){ if(c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='=') return1; elsereturn0;}【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第22頁。測試結(jié)果:【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第22頁。intOperate(intb,charx,inta){ intz; switch(x){ case'+':z=a+b;break; case'-':z=a-b;break; case'*':z=a*b;break; case'/':z=a/b;break; } returnz;}#include"head.h"#include"fuhao.cpp"#include"iostream"usingnamespacestd;voidturn(Stack&T,chard[max]);voidchange(StackT,Stack&S);typedefstructNode{datap;structNode*lchild,*rchild;}Node,*Tree;voidmain(){ voidPostOrder(TreeT,Stack&S); voidmain2(Tree&T); StackP; TreeT; InitStack(P); datab;【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第23頁。 b.k=2;【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第23頁。 b.s='='; Push(P,b); main2(T); PostOrder(T,P); GetTop(P,b); cout<<"表達(dá)式值為"<<b.i<<endl;}后序遍歷求值:voidPostOrder(TreeT,Stack&S)//利用遞歸,后序遍歷并求值,T為二叉樹,S為存儲用的棧{ dataa,b,c,d; if(T!=NULL) { PostOrder(T->lchild,S); PostOrder(T->rchild,S); c=T->p; if(c.k==1)Push(S,c); if(c.k==2) { Pop(S,b);Pop(S,a); d.k=1;d.i=Operate(b.i,c.s,a.i); Push(S,d); } }}測試結(jié)果:5.1.3張越測試#include"head.h"#include"fuhao.cpp"#include"iostream"usingnamespacestd;【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第24頁?!緮?shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第24頁。voidturn(Stack&T,chard[max]);voidchange(StackT,Stack&S);typedefstructNode{datap;structNode*lchild,*rchild;}Node,*Tree;voidmain(){ Stackmain1(); intCreatTree(Tree&T,Stack&S); StackS; TreeT; InitStack(S); datab,c; inti; b.k=2;b.s='='; Push(S,b); S=main1(); CreatTree(T,S); cout<<"表達(dá)式樹建立成功!"<<endl; cout<<"根節(jié)點值為:"; while(1) { c=T->p; if(c.k==1)cout<<c.i<<endl; if(c.k==2)cout<<c.s<<endl; cout<<"訪問左孩子1,訪問右孩子2:"; cin>>i; if(i==1)T=T->lchild; if(i==2)T=T->rchild; }}intCreatTree(Tree&T,Stack&S)//建立二叉鏈表{ datab,c; Pop(S,b); if(b.k==1) //當(dāng)遇數(shù)字時,在后面補(bǔ)兩個空位,用于建立二叉樹 { c.k=3;Push(S,c);Push(S,c);}【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第25頁。 if(b.k==3)T=NULL;【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第25頁。 else {if(!(T=(Node*)malloc(sizeof(Node))))exit(-1); T->p=b; CreatTree(T->lchild,S); CreatTree(T->rchild,S); }return(1);}測試結(jié)果:棧的創(chuàng)建與操作:#include"iostream"usingnamespacestd;#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10#definemax50typedefstructNdata{ intk;//判斷用k=1:數(shù)字2:符號3:返回,用于二叉樹的建立 inti;//數(shù)字 chars;//符號}data;typedefstructNStack{ data*base; data*top; intstacksize;}Stack;intInitStack(Stack&S){ S.base=(data*)malloc(STACK_INIT_SIZE*sizeof(data)); if(!S.base)exit(0);【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第26頁。 【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第26頁。 S.stacksize=STACK_INIT_SIZE; return1;}intGetTop(StackS,data&e){ if(S.top==S.base)return0; e=*(S.top-1); return1;}intPush(Stack&S,datae){ if(S.top-S.base>=S.stacksize) { S.base=(data*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(data)); if(!S.base)exit(0); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *(S.top++)=e; return1;}intPop(Stack&S,data&e){ if(S.top==S.base)return0; e=*--S.top; return1;}voidClearStack(Stack&S)//把棧置空,只留棧底{ datae; while(1) { GetTop(S,e); if(e.k==-1)break; Pop(S,e); }}【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第27頁?!緮?shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第27頁。voidmain(){ inti; StackT; InitStack(T); cout<<"創(chuàng)建棧成功!"<<endl; dataa,b; a.k=-1;a.i=-1; Push(T,a); while(1) { cout<<"對棧進(jìn)行操作:1.存入數(shù)據(jù)2.獲取棧頂元素3.取出并刪除棧頂元素4.置空棧,只留棧底5.結(jié)束:"; cin>>i; if(i==1) { cout<<"請輸入2個數(shù)字:"; cin>>b.k>>b.i; Push(T,b); cout<<"已成功存入棧里!"<<endl; } if(i==2) { GetTop(T,b); cout<<b.k<<""<<b.i<<endl; } if(i==3) { Pop(T,b); cout<<b.k<<""<<b.i<<endl; } if(i==4) { ClearStack(T); cout<<"置空成功!"<<endl; } getchar();getchar(); if(i==5)break; }}【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第28頁。測試結(jié)果:【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第28頁。5.2組裝與系統(tǒng)測試【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第29頁。5.3系統(tǒng)運行【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第29頁。6課題總結(jié)6.1課題評價按照課題的要求,我們組同學(xué)進(jìn)行了分工,實現(xiàn)了其所規(guī)定的設(shè)計要求,并且有所拓展,運用課本上的知識及學(xué)習(xí)了一些本來未曾接觸的知識,運用陌生的類模板實現(xiàn)了掌握較為熟練的功能。6.2團(tuán)隊協(xié)作由于需要學(xué)習(xí)新的知識--MFC編程語言,在完成項目過程中,我們進(jìn)行了明確的分工,以確保高效,每個人對新知識的學(xué)習(xí),之后匯總,按照所學(xué)分配任務(wù),高效地完成了任務(wù)。6.3個人設(shè)計小結(jié)(按組員分工)6.3.1余灝然設(shè)計小結(jié)【數(shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第30頁。經(jīng)過一個星期的課程設(shè)計,過程曲折可謂一語難盡。整天都是對著電腦,不然就是翻閱資料。這次課程設(shè)計使我收獲了很多,不僅有技術(shù)上的,還有做事方面的,我學(xué)會了不驕不躁去完成好每一件事。

這次的課程設(shè)計,加強(qiáng)了我們動手、思考和解決問題的能力。鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學(xué)知識的能力。培養(yǎng)了我選用參考書,查閱手冊及文獻(xiàn)資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。通過實際編譯系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計方法。通過課程設(shè)計,培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟(jì)觀念和全局觀念。而且做課程設(shè)計同時也是對課本知識的鞏固和加強(qiáng),平時看課本時,有些問題就不是很能理解,做完課程設(shè)計,那些問題就迎刃而解了,而且還可以記住很多東西。總之這次課設(shè)對我們現(xiàn)在的學(xué)習(xí)及以后的工作無疑有莫大的幫助?!緮?shù)據(jù)結(jié)構(gòu)】【A】十進(jìn)制整數(shù)四則運算計算器全文共34頁,當(dāng)前為第30頁。6.3.2魏嘉設(shè)計小結(jié)1、上好實驗課,多實踐,充分利用上機(jī)機(jī)會,查漏補(bǔ)缺,培養(yǎng)一些好的習(xí)慣,日后會在工

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論