ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/5/19 14:42:02ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£
±àÒëÔÀí³ÌÐòÉè¼ÆÊµÑ鱨¸æ
¡ª¡ª±í´ïʽÓï·¨·ÖÎöÆ÷µÄÉè¼ÆÊµÏÖ
°à¼¶£º¼ÆËã»ú1306°à ÐÕÃû£ºÍõÀû´ï
ѧºÅ£º20133959
ʵÑéÄ¿±ê£ºÊ¹ÓÃLL(1)·ÖÎö·¨¹¹Ôì±í´ïʽÓï·¨·ÖÎöÆ÷³ÌÐò£¬ÅбðËãÊõ±í´ïʽ£¬¸ø³öÅбð½á¹û¡£
ʵÑéÄÚÈÝ£º Ò»¡¢¸ÅÒªÉè¼Æ
1.ËãÊõ±í´ïʽÎÄ·¨£º
E¡ú T | E¦Ø0T T¡ú F | T¦Ø1F F¡ú i | ( E ) ÆäÖЦØ0£º+ - ¦Ø1£º* / i£ºÊý×Ö»ò³£Êý ÎÄ·¨±ä»»£º E ¡ú T M M ¡ú ¦Ø0 T M |¦Å T ¡ú F | N N ¡ú ¦Ø1 F N |¦Å
F ¡ú i | ( E ) ÆäÖЦØ0£º+ - ¦Ø1£º* / i£ºÊý×Ö»ò³£Êý 2.LL(1)·ÖÎö±í
±í1.LL(1)·ÖÎö±í E M T N F ) # i MT,p NF,p ¦Å,n + MT,n - MT,n * NF,n / NF,n ( MT,p NF,p )E,n ) ¦Å,p ¦Å,p ¦Å,n # ¦Å,p ¦Å,p OK
¶þ¡¢Êý¾Ý½á¹¹
1.ÊäÈë±í´ïʽ
¶¨ÒåcharÐÍÊý×éexpstrΪ´æ·ÅÊäÈë±í´ïʽµÄÊý×飬
char expstr[100];
2.·ÖÎöÕ»
¶¨ÒåÒ»¸öÕ»À´½øÐÐLL(1)·ÖÎö¡£Õ»ÖÐÓÐbottom¡¢top¡¢stacksizeµÈÔªËØ£¬ÓÃÓÚ³ÌÐòµ÷ÓÃÕ»ºÍ¶ÔÕ»²Ù×÷¡£
typedef struct //¶¨ÒåÓï·¨µÄÕ» {
SElemType *bottom;//µ× SElemType *top;//¶¥ int stacksize; }SqStack;
£¨°üÀ¨£º¸ÅÒªÉè¼Æ¡¢Êý¾Ý½á¹¹¡¢Á÷³Ìͼ¡¢¹Ø¼üº¯ÊýµÈ ÓÐÑ¡ÔñÌîд£©
Ô´³ÌÐò´úÂ룺£¨¼ÓÈë×¢ÊÍ£©
#include
using namespace std;
#define STACKSIZE 30 //Õ»´óС #define STACKINCREMENT 10 //Õ»ÔöÁ¿ #define OK 1 #define Error 0
#define OVERFLOW -1
typedef char SElemType; typedef int Status;
int i=0;
int count1=0;
int count2=0; //¼ÆÊýÖÕ½á·ûµÄ¸öÊý char expstr[100];
typedef struct //¶¨ÒåÓï·¨µÄÕ» {
SElemType *bottom;//µ× SElemType *top;//¶¥ int stacksize; }SqStack;
Status InitStack(SqStack &S) //³õʼ»¯Õ» {
S.bottom=(SElemType*)malloc(STACKSIZE*sizeof(SElemType)); if(!S.bottom)
exit(OVERFLOW); S.top=S.bottom;
S.stacksize=STACKSIZE;