Stack Whereat; char sample;
InputFile = fopen(\ /*´ò¿ªÎļþ*/ OutputFile = fopen(\
Whereat = malloc(sizeof(struct Node)); /*¸ø Whereat·ÖÅä¿Õ¼ä*/ Whereat->Next = NULL; if (!Input !OutputFile) { /*´íÎó´¦Àí*/ printf(\ return(1); }
sample = getc(InputFile); while ( sample != EOF){ Temp = fopen(\ /*Éú³ÉTempÎļþ*/ ungetc(sample,InputFile); /* put back sample×Ö·û*/ ConvertToPost(Input); /*ÖÐ׺±äºó׺*/ if (PrintError){ /*´íÎó´¦Àí*/ fprintf(OutputFile,\ fscanf(InputFile,\ PrintError = 0;
} else if (IsEmpty(Whereat) == 1){ /*Ìø¹ýÔÚinputÎļþÖеĿոñ*/ } else if (IsEmpty(Whereat) != 1){ Reverse(Whereat); if (Top(Whereat) == 'B'){ /*´íÎó´¦Àí£¬*/ /*A±íʾ²Ù×÷ÊýB±íʾÔËËã·û*/ PrintError = 1; /*ºó׺±í´ïʽµÚÒ»¸öÔªËØÓ¦ÊDzÙ×÷Êý¶ø²»ÊÇÔËËã·ûºÅ*/
} fclose(Temp); Temp = fopen(\ Calculate(OutputFile, Whereat,Temp); /*¼ÆËã½á¹û*/ } fclose(Temp); MakeEmpty(Whereat); /* Çå¿ÕWhereatÓÃÀ´´¦ÀíÏÂÒ»ÐÐ*/ putc('\\n',OutputFile); /* ÔÚÊä³öÎļþÖл»ÐÐ*/ sample = getc(InputFile);
} /* WhileÑ»·½áÊø*/
free(Whereat); fclose(InputFile); fclose(OutputFile);
remove(\ /* ɾ³ýTemp.txt*/ return 1; }
/******¼ì²é¶ÑÕ»ÊÇ·ñΪ¿Õ******/ int IsEmpty(Stack S) {
return(S->Next==NULL); }
/******¼ì²éfloat¶ÑÕ»ÊÇ·ñΪ¿Õ******/ int FIsEmpty(FStack S) {
return(S->Next==NULL); }
/******µ¯³öÕ»¶¥ÔªËØ******/ void Pop(Stack S) { }
PtrToNode FirstCell; if (IsEmpty(S)) perror(\ else{ FirstCell = S->Next; S->Next = S->Next->Next; free(FirstCell); }
/******µ¯³öfloatÕ»¶¥ÔªËØ******/ void FPop(FStack S) {
Ptr_Fn FirstCell; if (FIsEmpty(S)) perror(\ else{ FirstCell = S->Next; S->Next = S->Next->Next; free(FirstCell);
} }
/******½«¶ÑÕ»ÖÿÕ******/ void MakeEmpty(Stack S) {
if (S == NULL) perror(\ else while (!IsEmpty(S)) Pop(S); }
/******½«float¶ÑÕ»ÖÿÕ******/ void FMakeEmpty(FStack S) {
if (S == NULL) perror(\ else while (!IsEmpty(S)) Pop(S); }
/******ÔªËØ½øÕ»******/ void Push(char X, Stack S) {
PtrToNode TmpCell;
TmpCell = (PtrToNode)malloc(sizeof(struct Node)); if (TmpCell == NULL) perror(\ else{
TmpCell->Element = X; TmpCell->Next = S->Next; S->Next = TmpCell; } }
/******floatÔªËØ½øÕ»******/ void FPush(float X, FStack S) {
Ptr_Fn TmpCell;
TmpCell = (Ptr_Fn)malloc(sizeof(struct FNode));
if (TmpCell == NULL) perror(\ else{ TmpCell->Element = X; TmpCell->Next = S->Next; S->Next = TmpCell; } }
/******·µ»ØÕ»¶¥ÔªËØ******/ char Top(Stack S)
{
if (!IsEmpty(S)) return S->Next->Element; perror(\ exit(1); return 0; }
/******·µ»ØfloatÕ»¶¥ÔªËØ******/ float FTop(FStack S)
{
if (!FIsEmpty(S)) return S->Next->Element; perror(\ exit(1); return 0; }
/******½«¶ÑÕ»ÔªËØµ¹ÖÃ******/ void Reverse(Stack Rev) { }
Stack Tempstack;
Tempstack = malloc(sizeof(struct Node)); Tempstack->Next = NULL; while (!IsEmpty(Rev)){ Push(Top(Rev),Tempstack); /*½«ÔªËØÑ¹Õ»µ½Ò»¸öÁÙʱ¶ÑÕ»*/ Pop(Rev); } Rev->Next = Tempstack->Next; /*Ö¸ÏòеĶÑÕ»*/