《C语言速算24数据结构课程设计.doc》由会员分享,可免费在线阅读全文,更多与《C语言速算24数据结构课程设计(最终版)》相关文档资源请在帮帮文库()数亿文档库存里搜索。
1、{rintf(quotStackisnull\nquot);*显示栈为空信息*return'';*返回空字符*}returntogtdata;*返回栈顶元素*}STACK*to(STACK*to,char*x)*取栈顶元素,并删除栈顶元素*{*x=tox(to);*读栈顶元素*to=o(to);*删除栈顶元素*returnto;*返回栈顶指针*}intemty(STACK*to)*判栈是否为空*{if(to==NULL)*如果为空*return;*返回*elsereturn;*否则返回*}inttext(char*s){settextstyle(,,);*三重笔划字体,放大倍*outtextxy(,,s);*输出字符串s*setusercharsize(,,,);*水平放大倍,垂直放大倍*settextstyle(,,);*无衬字笔划,放大倍*outtextxy(,,s);*输出字符串s*getch();*键盘输入任一字符*return;*返回*})*如果为空*{rintf(quotmemoryisoverflow\n!!quot);*显示内存溢出*exit();*退出*}gtdata=。
2、um中*to=to(to,amnum);*将栈顶元素取出存入num中*result=num*num;*将num与num相乘结果存入result中*to=ush(to,result);*将result压入堆栈*}if(s=='')*如果为''号*{to=to(to,amnum);*将栈顶元素取出存入num中*to=to(to,amnum);*将栈顶元素取出存入num中*result=numnum;*将num除num结果存入result中*to=ush(to,result);*将result压入堆栈*}i++;*i加*}to=to(to,amresult);*最后栈顶元素的值为计算的结果*returnresult;*返回结果*}STACK*initstack(STACK*to)*初始化*{to=NULL;*栈顶指针置为空*returnto;*返回栈顶指针*}STACK*ush(STACK*to,intx)*入栈函数*{STACK*;*临时指针类型为STACK*=(STACK*)malloc(sizeof(STACK));*申请STACK大小的空间*if(==NULL=NULL)*栈是否为空*。
3、栈顶元素值并删除栈顶元素*intemty(STACK*to);*判栈是否为空函数*STACK*initstack(STACK*to);*栈初始化*STACK*ush(STACK*to,charx);*栈入栈运算*STACK*o(STACK*to);*栈删除栈顶元素*chartox(STACK*to);*栈读栈顶元素*STACK*to(STACK*to,char*x);*栈读出栈顶元素值并删除栈顶元素*intemty(STACK*to);*判栈是否为空函数*inttext(char*s);*显示文本*main(){chars[N],s[N],ch;inti,result;intgdriver,gmode;init();*初始化函数*while(){lay();*发牌*gotoxy(,);*移动光标*rintf(quotNote\nquot);rintf(quotPleaseent*{STACK*to=NULL;*定义栈顶指针*inti,j;charw;i=;j=;while(e!='\')*当字符串没有结束时*{if(isdigit(e))*如果字符是数字*{do{a[j]=e;*将数字原。
4、,用来表示*{'A','','','','','','','','','','J','Q','K'},{'A','','','','','','','','','','J','Q','K'},{'A','','','','','','','','','','J','Q','K'}};tyedefstructnode{intdata;structnode*link;}STACK;*栈*tyedefstructnode{chardata;structnode*link;}STACK;*栈*voidlay(void);*发牌的具体过程*voidrand(intj);*随机发牌函数*voidchange(char*e,char*a);*中缀变后缀函数*intcomuter(char*s);*后缀表达式计算函数*STACK*initstack(STACK*to);*栈初始化*STACK*ush(STACK*to,intx);*栈入栈运算*STACK*o(STACK*to);*栈删除栈顶元素*inttox(STACK*to);*栈读栈顶元素*STACK*to(STACK*to,int*x);*栈读出。
5、x;*保存值x到新空间*gtlink=to;*新结点的后继为当前栈顶指针*to=;*新的栈顶指针为新插入的结点*returnto;*返回栈顶指针*}STACK*o(STACK*to)*出栈*{STACK*q;*定义临时变量*q=to;*保存当前栈顶指针*to=togtlink;*栈顶指针后移*free(q);*释放q*returnto;*返回栈顶指针*}inttox(STACK*to)*读栈顶元素*{if(to==NULL)*栈是否为空*{rintf(quotStackisnull\nquot);*显示栈为空信息*return;*返回整数*}returntogtdata;*返回栈顶元素*}STACK*to(STACK*to,int*x)*取栈顶元素,并删除栈顶元素*{*x=tox(to);*读栈顶元素*to=o(to);*删除栈顶元素*returnto;*返回栈顶指针*}intemty(STACK*to)*判栈是否为空*{if(to==NULL)*如果为空*return;*返回*elsereturn;*否则返回*}STACK*initstack(STACK*to)*初始化*{to=NUL。
6、;*提示输入字符串格式*rintf(quot\nquot);scanf(quot%s%cquot,s,amch);*输入字符串压回车键*change(s,s);*调用change函数将中缀表达式s转换为后缀表达式s*result=comuter(s);*计算后缀表达式的值,返回结果result*if(result==)*如果结果等于*text(quotverygoodquot);*调用函数text显示字符串quotverygoodquot*elsetext(quotwrong!!!quot);*否则函数text显示字符串quotwrong!!!quot*rintf(quotContinue(yn)?\nquot);*提示信息,是否继续*scanf(quot%cquot,amch);*输入一字符*if(ch=='n'||ch=='N')*如果该字符等于n或N*eak;*跳出循环,程序结束*}*否则,开始下一轮循环*close();return;*返回*}voidrand(intj)*随机发牌函数*{intkind,num;charstr[],n;randomize();while()*循环。
7、L;*栈顶指针置为空*returnto;*返回栈顶指针*}STACK*ush(STACK*to,charx)*入栈函数*{STACK*;*临时指针类型为STACK*=(STACK*)malloc(sizeof(STACK));*申请STACK大小的空间*if(==NULL)*如果为空*{rintf(quotmemoryisoverflow\n!!quot);*显示内存溢出*exit();*退出*}gtdata=x;*保存值x到新空间*gtlink=to;*新结点的后继为当前栈顶指针*to=;*新的栈顶指针为新插入的结点*returnto;*返回栈顶指针*}STACK*o(STACK*to)*出栈*{STACK*q;*定义临时变量*q=to;*保存当前栈顶指针*to=togtlink;*栈顶指针后移*free(q);*释放q*returnto;*返回栈顶指针*}chartox(STACK*to)*读栈顶元素*{if(to=cludequotctyehquot*字符操作函数*char[][]={{'A','','','','','','','','','','J','Q','K'},*扑克牌。
8、直到有牌发*{num=random();*大小随机数*if([kind][num]!=)*该数未取过*{n=[kind][num];*取相应位置的扑克牌数*[kind][num]=;*牌发好以后相应位置的元素置*eak;}}if(n!='')*输出其牌他*{settextstyle(,,);srintf(str,quot%cquot,n);outtextxy(COL+j*,ROW+,str);*显示牌的大小*}else*输出的时候*{srintf(str,quot%dquot,);outtextxy(COL+j*,ROW+,str);}}voidlay(void)*发牌的具体过程*{intj;for(j=;jlt;j++){rand(j);*随机取牌*delay();*延时显示*}}voidchange(char*e,char*a)*中缀字符串e转后缀字符串a函数详细设计.数据类型的定义.程序分析.基本程序错误!未定义书签。分析结果课程设计总结参考文献问题描述用C语言,结构体实现速算的运算,从一副牌中随机发出张扑克,用扑克牌的数字及运算符号“+”、“”、“”、“”及括号“(”和“)”组成。
9、{rintf(quotStackisnull\nquot);*显示栈为空信息*return'';*返回空字符*}returntogtdata;*返回栈顶元素*}STACK*to(STACK*to,char*x)*取栈顶元素,并删除栈顶元素*{*x=tox(to);*读栈顶元素*to=o(to);*删除栈顶元素*returnto;*返回栈顶指针*}intemty(STACK*to)*判栈是否为空*{if(to==NULL)*如果为空*return;*返回*elsereturn;*否则返回*}inttext(char*s){settextstyle(,,);*三重笔划字体,放大倍*outtextxy(,,s);*输出字符串s*setusercharsize(,,,);*水平放大倍,垂直放大倍*settextstyle(,,);*无衬字笔划,放大倍*outtextxy(,,s);*输出字符串s*getch();*键盘输入任一字符*return;*返回*})*如果为空*{rintf(quotmemoryisoverflow\n!!quot);*显示内存溢出*exit();*退出*}gtdata=。
10、一个计算表达式,从键盘上输入该计算表达式,系统运行后得出计算结果,如果结果等于,则显示“verygood”,否则,显示“wrong!!!”,接着询问是否继续,按字符n后程序结束,否则系统重复上述步骤。需求分析用二维数组char[][]存放扑克,用A表示,表示,J、Q、K分别表示、、。建立两个栈分别存放随机发的四张牌和运算符进行入栈出栈操作进行速算,输出计算的值判断如果结果等于则成功若结果不为继续循环操作直到结果为或者输入n或N终止。概要设计,.设计思路()首先定义全局变量,引入标准输入与输出函数,建立结构体对速速进行相关的操作。()主函数main,判断栈空,计算机随机发发出四张牌进行入栈操作。()利用出栈操作栈栈进行运算操作。()运算结果等于结束不等于继续循环直到出现或者按n或N结束。.模块划分本程序包括一个模块:主程序模块,main(){初始化;定义数据类型;初始化栈;发牌进行入栈出栈运算操作;}.流程图开始发四张牌输入表达式字符s调用change函数将中缀表达式变后缀表达式调用计算函数计算表达式的值返回结果result结果==jieguo输出结果“wrong”输出结果“verygoo。
11、栈顶元素值并删除栈顶元素*intemty(STACK*to);*判栈是否为空函数*STACK*initstack(STACK*to);*栈初始化*STACK*ush(STACK*to,charx);*栈入栈运算*STACK*o(STACK*to);*栈删除栈顶元素*chartox(STACK*to);*栈读栈顶元素*STACK*to(STACK*to,char*x);*栈读出栈顶元素值并删除栈顶元素*intemty(STACK*to);*判栈是否为空函数*inttext(char*s);*显示文本*main(){chars[N],s[N],ch;inti,result;intgdriver,gmode;init();*初始化函数*while(){lay();*发牌*gotoxy(,);*移动光标*rintf(quotNote\nquot);rintf(quotPleaseent*{STACK*to=NULL;*定义栈顶指针*inti,j;charw;i=;j=;while(e!='\')*当字符串没有结束时*{if(isdigit(e))*如果字符是数字*{do{a[j]=e;*将数字原 。
12、e的字符元素压入堆栈*}if(e=='*'||e=='')*如果字符是乘或除号时*{if(!emty(to))*如栈不为空*{w=tox(to);*读栈顶元素存入w*while(w=='*'||w=='')*当栈顶元素是乘或除时反复循环*{a[j]=w;j++;*将栈顶元素存入字符串a中,a的下标加*to=o(to);*删除栈顶元素*if(emty(to))*如果栈为空*eak;*跳出循环*elsew=tox(to);*否则读栈顶元素*}}to=ush(to,e);*将当前e字符元素压入堆栈*}i++;*e的下标加*}while(!emty(to))*当不为空时反复循环*to=to(to,ama[j++]);*将栈顶元素存入数组a中*a[j]='\';*将字符串结束标记写入最后一个数组元素中构成字符串*}intcomuter(char*s)*计算函数*{STACK*to=NULL;inti,k,num,num,resulerexressaccrodingtoabovefournumber\nquot);*提示信息*rintf(quotFormatasfollows:*(+)\nquot)