欢迎来到天天文库
浏览记录
ID:59332308
大小:46.00 KB
页数:6页
时间:2020-09-04
《课程设计——魔王语言解释.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
此文档下载收益归作者所有