• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 101,  comments - 57,  trackbacks - 0
            看了數(shù)據(jù)結(jié)構(gòu)一書,果然有所提升。在講到堆棧的應(yīng)用時提到后綴表達(dá)式,令我茅塞頓開!

            想起poj的2269,正好書上又沒有給出代碼。于是乎自己寫了一遍。雖然還是沒有用編譯器的思想來得簡約明了。但個人認(rèn)為這種這也算是一種不錯的實現(xiàn)方法了。關(guān)于“中綴到后綴的部分”是為解題的關(guān)鍵,但是這個地方還是寫得比較垃圾,不過思想一致就行,其他的待以后提高了再做改進(jìn)吧,看官莫笑~

            #include "stdio.h"

            // DWORD  0 0 0 0  1  1 1 1 1  32bit
            //                    Z  D C B A
            //        1  ( * - +

            #define ADD  0x80000001
            #define SUB  0x80000002
            #define MUL  0x80000004
            #define LBC  0x80000008

            #define MAX_SIZE 255

            int  queue[MAX_SIZE];
            int  queue_pointer = 0;

            int  stack[MAX_SIZE];
            int  stack_pointer = 0;

            void deal_infix(char *pline)
            {
                
            int temp;

                stack_pointer 
            = 0;
                queue_pointer 
            = 0;

                
            do
                
            {
                    
            switch(*pline)
                    
            {
                    
            case '{':
                        temp 
            = 0;
                        
            break;
                    
            case '}':
                        queue[queue_pointer
            ++= temp;
                        
            break;
                    
            case '+':
                        
            while (stack_pointer && LBC != stack[stack_pointer - 1])
                        
            {
                            queue[queue_pointer
            ++= stack[--stack_pointer];
                        }

                        stack[stack_pointer
            ++= ADD;
                        
            break;
                    
            case '-':
                        
            while (stack_pointer && LBC != stack[stack_pointer - 1])
                        
            {
                            queue[queue_pointer
            ++= stack[--stack_pointer];
                        }

                        stack[stack_pointer
            ++= SUB;
                        
            break;
                    
            case '*':
                        
            if (stack_pointer && MUL == stack[stack_pointer - 1])
                        
            {
                            queue[queue_pointer
            ++= stack[--stack_pointer];
                        }

                        stack[stack_pointer
            ++= MUL;
                        
            break;
                    
            case '(':
                        stack[stack_pointer
            ++= LBC;
                        
            break;
                    
            case ')':
                        
            while (LBC != stack[stack_pointer - 1])
                        
            {
                            queue[queue_pointer
            ++= stack[--stack_pointer];
                        }

                        
            --stack_pointer;
                        
            break;
                    
            default:
                        temp 
            |= 1 << (*pline - 'A');
                        
            break;
                    }

                }
            while (*(++pline));

                
            while (stack_pointer)
                
            {
                    queue[queue_pointer
            ++= stack[--stack_pointer];
                }

            }


            void deal_postfix()
            {
               // 此處已被省略

            }


            void output()
            {
                
            int i;

                printf(
            "{");
                
            for (i = 0; i < 'Z' - 'A' + 1++i)
                
            {
                    
            if (stack[0& 1 << i)
                        printf(
            "%c", i + 'A');
                }

                printf(
            "}\n");
            }


            int main()
            {
                
            char line[MAX_SIZE];

                
            while (EOF != scanf("%s", line))
                
            {
                    deal_infix(line);                
                    deal_postfix();
                    output();
                }

                
            return 0;
            }
            posted on 2009-09-30 00:52 margin 閱讀(129) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2009年2月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            1234567

            常用鏈接

            留言簿

            隨筆檔案

            文章分類

            文章檔案

            收藏夾

            常去的壇子

            • CVC電腦病毒論壇
            • 很多人說我是AV,我告訴他們:別瞧不起人,我們也能創(chuàng)造價值
            • 安全焦點
            • 黑客聚集的地方,一般是好酒最多的地方...
            • 看雪論壇
            • 國內(nèi)最強(qiáng)的加密解密論壇,成醉其中經(jīng)常夜不歸宿
            • 驅(qū)動開發(fā)論壇
            • 厭倦了啤的朋友們,來我們來整點白的...痛痛快快的BSOD也好過隔鞋瘙癢!

            我的朋友

            • Sen的blog
            • IDE方面資深的受害者...經(jīng)常為一個變量的定義找不著北的痛苦程序員(深表同情)
            • 老羅的blog
            • 良師益友,千年水牛,引擎猛男,分析怪獸,墨鏡酷哥,臺球高手....

            搜索

            •  

            最新評論

            97久久精品午夜一区二区| 久久午夜福利无码1000合集| 国产精品久久久久久福利漫画| 99久久婷婷国产综合亚洲| 久久777国产线看观看精品| 久久精品亚洲欧美日韩久久 | 久久精品国产亚洲av麻豆小说 | 精品久久久久久成人AV| 久久无码精品一区二区三区| 欧洲人妻丰满av无码久久不卡 | 久久成人影院精品777| 中文国产成人精品久久不卡| 久久精品国产99久久香蕉| 久久精品a亚洲国产v高清不卡 | 精品无码久久久久久国产| 亚洲第一极品精品无码久久 | 亚洲AV无码一区东京热久久| 久久久免费观成人影院 | 日韩一区二区三区视频久久| 国产麻豆精品久久一二三| 人人狠狠综合久久亚洲| 国产福利电影一区二区三区久久久久成人精品综合 | 成人综合伊人五月婷久久| 久久亚洲精品国产亚洲老地址| a级毛片无码兔费真人久久| 精品久久8x国产免费观看| 欧美亚洲国产精品久久| 午夜精品久久久久久影视777| 国产综合精品久久亚洲| 久久久中文字幕| 青青草原1769久久免费播放 | 久久免费大片| 99久久国产主播综合精品| 91久久精品国产91性色也| 欧美777精品久久久久网| 久久综合九色综合欧美狠狠| 91精品国产9l久久久久| 色综合久久综合网观看| 精品久久久久久久久中文字幕| 99精品国产在热久久无毒不卡 | 精品人妻伦九区久久AAA片69 |