首页 数据结构魔王语言

数据结构魔王语言

举报
开通vip

数据结构魔王语言#include#include#include#include#defineMaxsize200#defineMAX100intmaxline1,maxline2;typedefstructElem{charx;structElem*next;}ElemSN;structrule{charl[2];charr[10];};structWord{chardata;charword[20];structWord*next;};typedefstruct{inttop;charelem[Maxsize];}Stack;...

数据结构魔王语言
#include#include#include#include#defineMaxsize200#defineMAX100intmaxline1,maxline2;typedefstructElem{charx;structElem*next;}ElemSN;structrule{charl[2];charr[10];};structWord{chardata;charword[20];structWord*next;};typedefstruct{inttop;charelem[Maxsize];}Stack;typedefstruct{intfront,rear;charqueue[Maxsize];}Queue;structrulexx[20];structruleyy[20];//入栈操作intpush(Stack*s,charx){if(s->top1==Maxsize){printf("\n栈已满,不能继续入栈\n");return0;}s->top=1;s->elem[s->top]=x;return1;}//出栈操作charpop(Stack*s){if(s->top==-1){printf("\n栈已空,不可继续出栈\n");return('\0');}s->top--;returns->elem[s->top1];}//入队操作intqueue_in(Queue*p,charch){if(p->front==(p->rear1)%Maxsize){printf("\n队列已满,不能继续进行入队操作\n");return0;}p->queue[p->rear]=ch;p->rear=(p->rear1)%Maxsize;return1;}//出队操作charqueue_out(Queue*p){charch;if(p->rear==p->front){printf("\n队列已空,无法继续进行出队操作\n");return0;}ch=p->queue[p->front];p->front=(p->front1)%Maxsize;returnch;}//去括号voiddeletenode(Stack*s,Queue*r,chara[],inti){intj,flag;charch,t;while(i>=0){while(i>=0){if(a[i]!='(')//用ASCII码比较,判断a[i]是否为'('{push(s,a[i]);i=i-1;}else{i=i-1;break;}}j=0;flag=0;for(j=0;j<=s->top;j)if(s->elem[j]==')')flag;if(flag){while(s->top1&&s->elem[s->top]!=')'){ch=pop(s);queue_in(r,ch);  }if(s->elem[s->top]==')')pop(s);if(r->rear!=r->front){ch=queue_out(r);while(r->front!=r->rear){push(s,ch);t=queue_out(r);push(s,t);}push(s,ch);}}}i=s->top;while(i1){printf("%c",s->elem[i]);i--;}}//读大小写对应规则voidread_file(){FILE*fp;inti=0;charfilename[20];printf("\n请输入大小写转换规则所在的文件名:");gets(filename);fp=fopen(filename,"rt");if(fp==NULL){printf("\n打开文件失败,%s可能不存在\n",filename);printf("---------------------------\n");exit(1);}printf("\n大小写转换所对应的规则为:\n");while(fscanf(fp,"%s%s",xx[i].l,xx[i].r)!=EOF){printf("%s->%s ",xx[i].l,xx[i].r);i;}fclose(fp);}//读汉字对应规则voidword_file(){FILE*fp;inti=0;charfilename[20];printf("\n请输入汉字转换规则所在的文件名:");gets(filename);fp=fopen(filename,"rt");if(fp==NULL){printf("\n打开文件失败,%s可能不存在\n",filename);exit(1);}printf("\n汉字转换所对应的规则为:\n");while(fscanf(fp,"%s%s",yy[i].l,yy[i].r)!=EOF){//  printf("%s%s\n",yy[i].l,yy[i].r);printf("%s-%s",yy[i].l,yy[i].r);i;}printf("\n");fclose(fp);}//将栈中的元素存入数组中voidstore(chara[],Stack*s){inti=0;while(s->top1)a[i]=pop(s);a[i]='\0';}//大小写转换voidchange(chara[]){charb[100];intflag=0;inti,j,k,n;i=j=k=0;b[0]='\0';while(a[i])//判断是否有大写字母{if(a[i]>='A'&&a[i]<='Z')flag=1;i;}if(flag==0)return;i=0;while(a[i]){if(a[i]>='a'&&a[i]<='z'){b[j]=a[i];b[j]='\0';}else{while(a[i]!=xx[k].l[0])k;n=strlen(xx[k].r);strcat(b,xx[k].r);j=n;i;k=0;}}strcpy(a,b);a[j]='\0';change(a);}//翻译voidtranslate(chara[],structWord*h){structWord*m,*n;inti,k;i=k=0;n=h;while(a[i]){m=(structWord*)malloc(sizeof(structWord));m->data=a[i];m->word[0]='\0';while(a[i]!=yy[k].l[0])k;strcat(m->word,yy[k].r);m->next=NULL;k=0;i;n->next=m;n=m;}for(m=h->next;m;m=m->next)printf("%s",m->word);}//写文件操作voidsave_file(structWord*h){FILE*fp;structWord*p;charfilename[20];printf("\n\n请输入所要保存文件的文件名:");gets(filename);fp=fopen(filename,"at");if(fp==NULL){printf("\n打开文件失败,%s可能不存在\n",filename);exit(1);}p=h->next;while(p){fprintf(fp,"%s",p->word);p=p->next;}fclose(fp);}voidmain(){Stacks;Queuer;inti;chara[MAX];structWord*l;s.top=-1;r.front=r.rear=0;printf("\t **********************************************************\n");printf("\t ******************欢迎使用魔王语言解释系统****************\n");printf("\t **********************************************************\n");printf("\t *********************班级:软件   班*********************\n");printf("\t ********************** 姓名:    **********************\n");printf("\t ********************学号:      ********************\n");printf("\t **********************************************************\n");//输入魔王的话printf("请输入魔王说的话:\n");gets(a);i=strlen(a);a[i]='\0';i=i-1;printf("\n魔王的话对应的字母为:\n");deletenode(&s,&r,a,i);read_file();word_file();store(a,&s);change(a);printf("\n魔王的话转化成小写为:");i=0;while(a[i]){printf("%c",a[i]);i;}l=(structWord*)malloc(sizeof(structWord));l->next=NULL;printf("\n翻译为汉语意思:");translate(a,l);save_file(l);printf("程序结束!\n");}
本文档为【数据结构魔王语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_477730
暂无简介~
格式:doc
大小:30KB
软件:Word
页数:22
分类:
上传时间:2022-08-09
浏览量:1