c语言数据结构大作业答案,C语言数据结构大作业之魔王语言题

c语言数据结构课程设计恶魔语言1,[问题说明]:

有些恶魔总是用自己非常时髦抽象的语言之一说话,没有人能听懂,但他的语言总能解释大人能听懂的语言。因为他的语言是以下两个法则逐渐抽象的。

(1) (1) 1 2. m

(2) ( 1 2. n) n n-1.1

两种形状都从左到右表示分析。试着用恶魔的语言折叠解释系统,解释大人们能听懂的话。

基本要求:通过两种规则实施:设定代表恶魔语言词汇的大写字母。小写字母表示人的语言词汇。希腊字母表示可以用大写或小写字母替换的变量。恶魔的语言可以包含人的词汇。

(1) b 骑

(2)Asae

二、[基本要求]:

以以下两个具体规则和上述规则格式(2)实现:设定表示恶魔语言的大写字母、表示人语言词汇的小写字母、表示可以用大写或小写字母代替的变量的希腊字母。恶魔的语言可以包含人的词汇。

例如:

(1) b 骑

(2)Asae

三、[选择为内容]:

替代变量的数量没有限制。也就是说,程序启动时读取第一种形式的规则集。此规则集固定在程序中。第二条规则只能固定在程序中。

第四,[编程基本思想、原理和算法说明]:

(1)将魔王语言表示为一维阵列lan[ I]。

(2)魔王语言由用户输入,首次存储在lan[ I]中。

(3)魔王语言和人类语言的规则手动输入,规则2固定在程序上。

(4)实施过程:

答:最初,收到魔王语言后,会将其保存在局域网[ I]中。

b:第一次遍历数组,将数组括号中的元素从左到右放入堆栈。

c:按顺序堆叠堆叠的堆叠顶端元素,并按顺序处理堆叠顶端元素。

d:如果堆叠顶部元素为左括号,则套用flag=1,套用规则2;如果堆叠顶部元素为右括号,则套用flag=0,规则1。括号中的元素存储在数组中,以相反的顺序应用规则1输出。

1:设定堆叠的摘要资料类型定义。

ADT stack{}

数据对象:d={ ai | aicharset,I=1,2,n,n=0}

数据关系:R1={| ai-1,ai-d,I=2,n}

基本任务:

Init stack (&s)

操作结果:构成空堆栈。

推送(&s,e)

初始条件:堆栈s已存在。

操作结果:将新堆栈顶部元素e,放在堆栈s的堆栈顶部

Pop (&s&e)

初始条件:堆栈s已存在。

操作结果:删除s的堆栈顶部元素,并将该值返回到e。

}ADT stack

23360此程序包含四个模块:

1)主函数模块。

2)堆栈处理模块中的元素。

3)翻译大写处理模块。

4)翻译括号内的元素模块。

模块之间的调用关系:

主函数模块

元素在堆栈处理模块中;

翻译模块

翻译括号内的元素处理模块。

}

}

五、[我的源代码]:

#include

#include

#include

#include

#include

#define OK 1

#define OVERFLOW -1

#define status int

#define elemtype char

#define STACK_INIT_SIZE 100

#define STACKINCREAMENT 10

#define maxn 10010

Typedef struct

Elemtype * base

Elemtype * top

Int stacksize

} Sqstack

Status Init(Sqstack *S)

s-base=(elem type *)malloc(stack _ init _ size * size of(elem type));

If(!S-base)

exit(OVERFLOW);

S-top=S-base;

s-stacksize=STACK _ INIT _ SIZE;

Return OK

}

Status pop (sqstack * s,elemtype * e)//删除堆栈顶部元素,然后使用e返回其值。

if(S-top==S-base)return 0;

* e=*-s-top;

return * e;

}

Statuspush (sqstack * s,elemtype e)//插入堆叠顶部元素

If(S-top-S-base=S-stacksize)

s-base=(elem type *)realloc(s-base,(s-stack size stack increament)* size of(elem type)

If(!S-base)

exit(OVERFLOW);

S-top=S-base S-stacksize;

s-stack size=stack increament;

}

* S-top=e;

Return OK

}

Int main()

sq stack s;

init(s);//建立堆叠;

Chara [maxn]、b [maxn]、LAN [maxn]、f [maxn]、d[maxn];

Char c1、c2、C3;

输入Printf('规则1: \n ')。);

scanf(“% c-% s”,c1,a);//printf('%c-%s\n ',c1,a);

getchar();

scanf(“% c-% s”,c2,b);//printf(“% c-% s \ n”,c2,b);

getchar();

int len _ a=str len(a);

int len _ b=str len(b);

int f _ len=0;

for(int I=0);I=0;I-()//将魔王语言从右向左堆叠;

Push(s,LAN[I]);

}

char e;

int flag=0;

int d _ len=0;

Printf(“翻译的语言是”);

for(int I=0);I=0;J-)//右括号占用空间,因此长度减去2。

If(j)

Printf('%c%c ',c3,d[j]);

Else

printf(“% c”,d[j]);

}

}

Else if(flag!=1)

printf(“% c”,e);

}

put char(\ n);

return 0;

}

3、运行结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值