课程设计——魔王语言解释.doc

课程设计——魔王语言解释.doc

ID:59332308

大小:46.00 KB

页数:6页

时间:2020-09-04

课程设计——魔王语言解释.doc_第1页
课程设计——魔王语言解释.doc_第2页
课程设计——魔王语言解释.doc_第3页
课程设计——魔王语言解释.doc_第4页
课程设计——魔王语言解释.doc_第5页
资源描述:

《课程设计——魔王语言解释.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include"stdio.h"#include"stdlib.h"#include"malloc.h"//定义全局变量#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineNULL0#defineOVERFLOW-1#defineMAXSIZE100#definestack_init_size100#definestackincrement10chare;charMoWords[MAXSIZE];//定义数组,从系统输入要翻译的魔王语言sta

2、ticintlength=0;//定义链栈类型typedefstruct{char*base;//栈底指针char*top;//栈顶指针intstacksize;//栈存储空间的大小}sqstack;//定义链队列类型typedefstructqnode{chardata;structqnode*next;}qnode,*queueptr;typedefstruct{queueptrfront;//队头指针queueptrrear;//队尾指针}linkqueue;intInitStack(sqsta

3、ck*s){s->base=(char*)malloc(stack_init_size*sizeof(char));if(!s->base)exit(OVERFLOW);s->top=s->base;s->stacksize=stack_init_size;returnOK;}//end初始化栈intPushStack(sqstack*s,chare){if(s->top-s->base>=s->stacksize){s->base=(char*)realloc(s->base,(s->stacksi

4、ze+stackincrement)*sizeof(char));//扩展栈内存连续的空间stackincrement为新增空间大小if(!s->base)exit(OVERFLOW);s->top=s->base+s->stacksize;s->stacksize+=stackincrement;}*(s->top++)=e;//元素e进栈top++头指针后移returnOK;}//end入栈操作函数返回类型intintPopStack(sqstack*s,char*e){if(s->top==s-

5、>base)returnERROR;*e=*(--(s->top));//出栈,头指针top--returnOK;}//end出栈操作函数返回类型intintInitQueue(linkqueue*q){q->front=q->rear=(queueptr)malloc(sizeof(qnode));if(!q->front)exit(OVERFLOW);q->front->next=NULL;returnOK;}//end初始化队列intInQueue(linkqueue*q,chare){queu

6、eptrp;p=(queueptr)malloc(sizeof(qnode));if(!p)exit(OVERFLOW);p->data=e;p->next=NULL;q->rear->next=p;q->rear=p;returnOK;}//end入队操作函数返回类型intintOutQueue(linkqueue*q,char*e){queueptrp;if(q->front==q->rear)returnERROR;p=q->front->next;*e=p->data;q->front->ne

7、xt=p->next;if(q->rear==p)q->rear=q->front;free(p);returnOK;}//end出队操作函数返回类型intvoidDisStack(sqstack*s){inti=0;chart,c;c=MoWords[i];for(i=0;MoWords[i]!='#';i++){c=MoWords[i];if(c=='('){t=MoWords[i+1];//取括号中的首字母PushStack(s,t);//首字母入栈i++;//指向首字母do{i++;c=MoW

8、ords[i];PushStack(s,c);//第一次循环将次字母入栈PushStack(s,t);}while(c!=')');//直到括号中元素全部进栈PopStack(s,&t);//将多余进栈的首字母t出栈PopStack(s,&t);}}}//end括号内元素入栈处理函数intLengthMW(charmw[]){inti=0;charc;c=mw[i];for(i=0;c!='';i++){length++;c=mw[i];}lengt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。