ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:81.18KB ,
资源ID:13073058      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13073058.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于某DAG地基本块优化Word文件下载.doc)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于某DAG地基本块优化Word文件下载.doc

1、if(isconsnode(B)p=calcons(Q.op,B);if(newleft=1)/*getnode(B)是处理 Q 时新建结点 */delnode(B);if(n=getnode(p)=NULL)makeleaf(p);类型 四元式 DAG 结点 0 型(=,B,A)A B 1 型 (op,B,A)op 2 型(op,B,C,A)(=,B,C,A)(jrop,B,C,A)B C=3 1 2 B C rop 3 1 2 B C op 3 1 2 实用文档 文案大全 n=getnode(p);else if(n=findnode(Q.op,B)=NULL)n=makenode(Q.o

2、p,B);case 2:if(getnode(C)=NULL)makeleaf(C);newright=1;if(isconsnode(B)&isconsnode(C)p=calcons(Q.op,B,C);if(newright=1)/*getnode(C)是处理 Q 时新建结点 */delnode(C);n=getnode(p);else if(n=findnode(Q.op,B,C)=NULL)n=makenode(Q.op,B,C);上述算法中应设置如下的函数:getnode(B):返回 B(可以是标记或附加信息)在当前 DAG 中对应的结点号。makeleaf(B):构造标记为 B

3、的叶子结点。isconsnode(B):检查 B 对应的结点是否为标记为常数的叶子结点。calcons(Q.op,B):计算 op B 的值(即合并已知量)。它的另一种调用形式是 calcons(Q.op,B,C):计算 B op C 的值。delnode(B):删除 B(结点的标记)在当前 DAG 中对应的结点。findnode(Q.op,B):在当前DAG中查找并返回这样的结点:标记为op,后继为getnode(B)(即查找公共子表达式 op B)。它的另一种调用形式是 findnode(Q.op,B,C)(即查找公共子表达式 B op C)。实用文档 文案大全 makenode(Q.op

4、,B,C):构造并返回标记为 op,左右后继分别为 getnode(B)、getnode(C)的内部结点。insertidset(n,A):若 getnode(A)=NULL,则把 A 附加到结点 n;否则,若 A 在 getnode(A)的附加标识符集中,且 getnode(A)无前驱或虽有前驱但 getnode(A)附加标识符集中符号数大于 1,则把 A 从 getnode(A)的附加标识符集中删除(即删除无用赋值)。请实现上述基本块的DAG构造算法,并添加从所得DAG按原来生成DAG各个结点的顺序,重建四元式序列的功能。(3)测试用例 用下面的基本块作为输入:(1)T1=A*B(2)T2

5、=3/2(3)T3=T1 T2(4)X=T3 (5)C=5(6)T4=A*B(7)C=2(8)T5=18+C(9)T6=T4*T5(10)Y=T6 基本块的 DAG 如下:按生成 DAG 各个结点的顺序,重建四元式序列如下:(1)T1=A*B(2)T2=1.5(3)T3=T1 1.5(4)X=T3 (5)T4=T1(6)C=2(7)T5=20(8)T6=T1*20(9)Y=T6 *-T1,T4 T3,X T6,Y A B 1.5 20 5 2 T2 T5 C 实用文档 文案大全 Code.txt 文件内容 T1=A*B T2=3/2 T3=T1 T2 X=T3 C=5 T4=A*B C=2 T

6、5=18+C T6=T4*T5 Y=T6#include#include#include#include /*function ans data statement*/#define MAXN 5 /*符号或变量最大长度*/*结点类型*/typedef struct node int iscons;/*0-无 1-整型 2-浮点*/int val_int;/*整型值*/double val_float;/*浮点值*/int idnum;/*变量的个数*/char idMAXNMAXN;/*变量 0valnum-1*/char opMAXN;/*结点操作*/int left,right;/*左右

7、节点*/DAGNODE;#define MAXNN 20 /*DAG 最大结点数目*/实用文档 文案大全/*DAG*/typedef struct mnode int num;/*结点个数*/DAGNODE nodeMAXNN;/*结点内容 1NUM*/DAG;/*四元式 Quaternion*/typedef struct snode int type;/*类型 0 1 2*/char opMAXN;/*操作*/char op1MAXN;/*操作数 1*/char op2MAXN;/*操作数 2*/char ansMAXN;/*结果*/QUA;void init();/*初始化函数*/boo

8、l getqua(QUA*qua);/*获取一个四元式*/int isnums(char*val);/*检测字符串是否是数字串 0 标识符 1 整型数串 2 浮点数串*/void makeleaf(DAGNODE*n,char val);/*构造叶子结点*/void makenode(DAGNODE*n,char op,int left,int right);/*构造中间结点*/int getnode(DAG dag,char var);/*获取 var所在结点号*/int find1node(DAG dag,char op1,char op);/*查找已有的表达式 1*/int find2n

9、ode(DAG dag,char op1,char op2,char op);/*查找已知表达式 2*/char*isconsnode(DAG dag,char id);/*是否是常数结点的 id*/void delnode(DAG*dag,int num);/*删除结点 num*/void delid(DAG*dag,int num);/*删除某节点的 Id*/void copynode(DAGNODE*to,DAGNODE from);/*复制结点值*/void insertvar(DAG*dag,int noden,char var);/*将值 var 附加在 noden 结点*/int

10、 insertnode(DAG*dag,DAGNODE dagn);/*将结点插入 DAG*/char*calcons1(char op,char op1);/*计算 op op1 的运算值*/char*calcons2(char op,char op1,char op2);/*op1 op op2*/void makeDAG();/*构造 DAG*/void dispDAG(DAG dag);/*输出 DAG*/char*getv(DAG dag,int dagn);FILE*fp;/*文件指针,指向代码文件*/void dispcode();int main()init();实用文档 文案

11、大全 dispcode();init();makeDAG();return 0;void dispcode()static int i=1;QUA q;while(getqua(&q)if(q.type=0)printf(%d)%s%s%sn,i+,q.ans,q.op,q.op1);else if(q.type=1)printf(%d)%s=%s%sn,i+,q.ans,q.op,q.op1);else printf(%d)%s=%s%s%sn,i+,q.ans,q.op1,q.op,q.op2);/*初始化函数*/void init()if(fp=fopen(code.txt,r)=NUL

12、L)printf(the code file is not existed.);exit(0);/*获取一个四元式*/bool getqua(QUA*qua)int t;if(feof(fp)fclose(fp);return false;fscanf(fp,%d,&t);fscanf(fp,%s,qua-ans);fscanf(fp,%s,qua-op);fscanf(fp,%s,qua-op1);if(fgetc(fp)=n|feof(fp)strcpy(qua-op2,);if(!strcmp(qua-op,=)qua-type=0;return true;实用文档 文案大全 fscan

13、f(fp,%s,qua-op);if(fgetc(fp)=n|feof(fp)strcpy(qua-op2,qua-op);strcpy(qua-op,qua-op1);strcpy(qua-op1,qua-op2);strcpy(qua-op2,);qua-type=1;fscanf(fp,%s,qua-op2);qua-type=2;int isnums(char*val)int i,flag;for(i=0;vali;i+)if(!isdigit(vali)if(vali=.)/*浮点*/flag=2;flag=0;else flag=1;/*整型*/return flag;/*构造叶子

14、结点*/void makeleaf(DAGNODE*n,char val)switch(isnums(val)case 0:n-iscons=0;n-val_float=0;n-val_int=0;n-idnum=1;strcpy(n-id0,val);实用文档 文案大全 n-idnum=0;n-iscons=1;n-val_int=atoi(val);n-idnum=0;n-iscons=2;n-val_float=atof(val);strcpy(n-op,);n-left=n-right=0;/*构造中间结点*/void makenode(DAGNODE*n,char op,int left,int right)n-idnum=0;strcpy(n-op,op);n-left=left;n-right=ri

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1