91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

編譯原理的中間代碼生成階段的逆波蘭式和四元式算法實現,vc++6.0編寫,

資源截圖

代碼片段和文件信息

/*	改程序的作用是將一個表達式轉換為逆波蘭式;
?* 程序的算法為老師上課講的算法,在筆記本上有記載;
?* 程序是基于棧的結構來實現的;
?* 改程序的缺陷是不能夠實現含有‘-‘號的表達式,而且不夠完善,不能實現含有冪次運算。
?*/

#include?“stdio.h“
#include?“stdlib.h“
#include?“string.h“
#include?“malloc.h“
#define?maxsize?30
FILE?*fp;
//定義的棧的結構
typedef?struct?node?
{
char?data[maxsize];
int?top;
}seqstack;

//全局變量
seqstack?*s1*s2;
char?operater[4]={‘+‘‘-‘‘*‘‘/‘};
char?operater1[2]={‘+‘‘-‘};
char?operater2[2]={‘*‘‘/‘};
char?Q[26]={‘a‘‘b‘‘c‘‘d‘‘e‘‘f‘‘g‘‘h‘‘i‘‘j‘‘k‘‘l‘‘m‘‘n‘‘o‘‘p‘‘q‘‘r‘‘s‘‘t‘‘u‘‘v‘‘w‘‘x‘‘y‘‘z‘};



//棧的操作
void?setnull(seqstack?*s) //置空棧
{
s->top=-1;
}
int?empty(seqstack?*s) //判斷棧空
{
if(s->top==-1)
return?1; //空
else?return?0; //非空
}
seqstack?*?push?(seqstack?*schar?x) //進棧
{
if(s->top==maxsize-1)
{
printf(“overflow!\n“);
return?NULL;
}
else
{
s->top++;
s->data[s->top]=x;
return?s;
}
}
char?pop?(seqstack?*s) //出棧
{
if(s->top<0)
{
printf(“underflow!\n“);
return?NULL;
}
else
{
s->top--;
return?s->data[s->top+1];
}
}
char?top(seqstack?*s) //取棧頂元素
{
if(s->top==-1)
{
printf(“stack?is?empty!\n“);
return?NULL;
}
else
return?(s->data[s->top]);
}

int?isin(char?a[]char?bint?N) //判斷字符b是否為集合a中的元素
{
int?i;
for?(i=0;i {
if(b==a[i])
break;
}
if(i>=N)
return?0; //不是該集合中的元素
else
return?1; //是該集合中的元素
}
//列的轉換
int?turn1(char?a)
{
if?(isin(Qa26)==1)
return?0;
else?if(a==‘(‘)
return?1;
else?if(isin(operatera4)==1)
return?2;
else?if(a==‘)‘)
return?3;
else?if(a==‘#‘)
return?4;
else
return?-1;
}
//行的轉換
int?turn2(char?a)
{
if(a==‘$‘)
return?0;
else?if(isin(operatera4)==1)
return?1;
else?return?-1;
}

//比較兩個運算符的優先級
int?compare(char?achar?b)
{
if?(isin(operater1a2)==1?&&?isin(operater2b2)==1)
return?1; //a的優先級比b的優先級小
else?return?0; //a的優先級大于或等于b的優先級
}

void?main()
{
s1=(seqstack*)malloc(sizeof(seqstack));
s2=(seqstack*)malloc(sizeof(seqstack));
if((fp=fopen(“athwart-poland(逆波蘭式).txt““w“))==NULL)
{
printf(“File?open?fail!\n“);
return;
}
char?input[maxsize]chch2temp;
int?i=0jsum=0com;
seqstack?*s;
s=(seqstack?*)malloc(sizeof(seqstack));
printf(“Please?input?the?expression(esp:?(a+b)*c):“);
fputs(“Please?input?the?expression?:“fp);
gets(input);
fputs(“input:“fp);
fputs(inputfp);
fputs(“\n“fp);
setnull(s);
setnull(s1);
setnull(s2);

i=0;sum=0;
s2=push(s2‘$‘);
s=push(s‘#‘);
while(input[i]!=‘\0‘)
{
sum++;
i++;
}
while(sum>0)
{
s=push(sinput[--sum]);
}

while(1)
{
ch=top(s);ch2=top(s2);
//printf(“ch=%cch2=%c\n“chch2);
i=turn2(ch2);j=turn1(ch);
//printf(“i=%dj=%d\n“ij);
if((i==0?&&?j==0)?||?(i==1?&&?j==0))
{
temp=pop(s);
s1=push(s1temp);
}
else?if((i==0?&&?j==1)?||?(i==1?&&?j==1))
{
push(s2‘$‘);
s->top--;
}
else?if(i==0?&&?j=

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????????74??2010-08-11?13:36??四元式和逆波蘭式\athwart-poland(逆波蘭式).txt

?????文件?????????76??2010-08-11?13:30??四元式和逆波蘭式\athwart-poland(逆波蘭式)1.txt

?????文件???????4132??2010-08-11?13:36??四元式和逆波蘭式\athwart-poland.cpp

?????文件???????3499??2010-08-11?13:33??四元式和逆波蘭式\athwart-poland.dsp

?????文件????????536??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland.dsw

?????文件??????41984??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland.ncb

?????文件??????48640??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland.opt

?????文件???????1201??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland.plg

?????文件???????4259??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland1.cpp

?????文件???????3511??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland1.dsp

?????文件????????538??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland1.dsw

?????文件??????41984??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland1.ncb

?????文件??????48640??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland1.opt

?????文件???????1213??2010-08-11?13:37??四元式和逆波蘭式\athwart-poland1.plg

?????文件?????184385??2010-08-11?13:37??四元式和逆波蘭式\Debug\athwart-poland.exe

?????文件?????198712??2010-08-11?13:37??四元式和逆波蘭式\Debug\athwart-poland.ilk

?????文件??????13907??2010-08-11?13:37??四元式和逆波蘭式\Debug\athwart-poland.obj

?????文件?????228208??2010-08-11?11:23??四元式和逆波蘭式\Debug\athwart-poland.pch

?????文件?????459776??2010-08-11?13:37??四元式和逆波蘭式\Debug\athwart-poland.pdb

?????文件?????184386??2010-08-11?13:37??四元式和逆波蘭式\Debug\athwart-poland1.exe

?????文件?????198564??2010-08-11?13:37??四元式和逆波蘭式\Debug\athwart-poland1.ilk

?????文件??????14180??2010-08-11?13:37??四元式和逆波蘭式\Debug\athwart-poland1.obj

?????文件?????228208??2010-08-11?11:27??四元式和逆波蘭式\Debug\athwart-poland1.pch

?????文件?????459776??2010-08-11?13:37??四元式和逆波蘭式\Debug\athwart-poland1.pdb

?????文件?????188487??2010-08-11?13:38??四元式和逆波蘭式\Debug\four-address(四元式).exe

?????文件?????207884??2010-08-11?13:38??四元式和逆波蘭式\Debug\four-address(四元式).ilk

?????文件??????17295??2010-08-11?13:38??四元式和逆波蘭式\Debug\four-address(四元式).obj

?????文件?????228208??2010-08-11?11:19??四元式和逆波蘭式\Debug\four-address(四元式).pch

?????文件?????467968??2010-08-11?13:38??四元式和逆波蘭式\Debug\four-address(四元式).pdb

?????文件??????41984??2010-08-11?13:38??四元式和逆波蘭式\Debug\vc60.idb

............此處省略15個文件信息

評論

共有 條評論