±àÒëÔ­ÀíʵÑéLL1·ÖÎö·¨×ÛÊö ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 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 #include #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;