⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄  倪协勉.cpp

📁 清化大学的数据结构(C语言版本)上所有例子的代码实现
💻 CPP
字号:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define length 11
#define STACK_INIT_SIZE 31
#define OK 1
#define ERROR 0
#define OVERFLOW 0
#define STACKINCREMENT 10
typedef struct SqStack{
	char *base;
	char *top;
	int stacksize;
}SqStack;
int InitStack(SqStack &S){
	S.base = (char *)malloc(STACK_INIT_SIZE * sizeof(char));
	if(!S.base) exit (OVERFLOW);
	S.top = S.base;
	S.stacksize = STACK_INIT_SIZE;
	return OK;
}
int push(SqStack &S,char e){
	if (S.top - S.base>=S.stacksize){
		S.base = (char *) realloc (S.base,(S.stacksize + STACKINCREMENT) * sizeof (char));
		if (!S.base) return OVERFLOW;
		S.top = S.base + S.stacksize;
		S.stacksize += STACKINCREMENT;
	}
	*S.top++ = e;
	return OK;
}//push
int pop(SqStack &S,char &e) {
	if (S.top == S.base) return ERROR;
	e = * --S.top;
	return OK;
}//Pop
 main()//	解释魔鬼语言
{
	char *p,t,y;
	char str[length];
	printf("请输入字符串");
	gets(str);
	p=str;
SqStack s1,s2;
 InitStack(s1);
	while(*p!='\n')
	{
		switch(*p)
		{
		case'A':{
			t='s';
			push(s1,t);
			t='a';
			push(s1,t);
			t='e';
			push(s1,t);
				} break;
		case'B':{
			t='t';
			push(s1,t);
			t='s';
			push(s1,t);
			t='a';
			push(s1,t);
			t='e';
			push(s1,t);
			t='d';
			push(s1,t);
			t='s';
			push(s1,t);
			t='a';
			push(s1,t);
			t='e';
			push(s1,t);
				} break;
		case'(':{
			char *q,x;
			q=p;
			while(q!=")")
			{
				q++;
			}
			x=*(++p);
			++p;
			while(p!=q)
			{
				push(s1,x);
				push(s1,*p);
				p++;
			}
            push(s1,x);
			p=++q;
				} break;
		default:push(s1,*p); break;
			p++;
		}
	}
		InitStack(s2);
		while(s1.top!=s1.base)
		{
			pop(s1,y);
			push(s2,y);
		}
		while(s2.top!=s2.base)
		{
			pop(s2,y);
			switch(y)
			{
			case't':printf("天"); break;
			case'd':printf("地"); break;
			case's':printf("上"); break;
			case'a':printf("一只"); break;
			case'e':printf("鹅"); break;
			case'z':printf("追"); break;
			case'g':printf("赶"); break;
			case'x':printf("下"); break;
			case'n':printf("蛋"); break;
			case'h':printf("恨"); break;
			}
		}
		return OK;

	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -