<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
    注:下文代碼主要來自參考書籍,本人稍稍修改了一下。

    泛型棧類:
    package com.heyang;

    /**
     * 棧數據結構
     * 說明:
     * 作者:何楊(heyang78@gmail.com)
     * 創建時間:2011-1-15 上午07:51:09
     * 修改時間:2011-1-15 上午07:51:09
     
    */
    public class MyStack<T>{
        
    private int size;    // 大小
        private T[] datas;    // 數據
        private int top;    // 棧頂元素下標
        
        @SuppressWarnings(
    "unchecked")
        
    public MyStack(int size){
            
    this.size=size;
            datas
    = (T[])new Object[this.size]; 
            top
    =-1;
        }
        
        
    /**
         * 壓棧
         
    */
        
    public void push(T t){
            datas[
    ++top]=t;
        }
        
        
    /**
         * 出棧
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:01:15
         
    */
        
    public T pop(){
            
    return datas[top--];
        }
        
        
    /**
         * 取得棧頂元素
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:02:02
         
    */
        
    public T getTopItem(){
            
    return datas[top];
        }
        
        
    /**
         * 查看棧是否為空
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:02:38
         
    */
        
    public boolean isEmpty(){
            
    return top==-1;
        }
    }

    括號檢查類:
    package com.heyang;

    /**
     * 表達式中括號檢查類
     * 說明:
     * 作者:何楊(heyang78@gmail.com)
     * 創建時間:2011-1-15 上午08:05:25
     * 修改時間:2011-1-15 上午08:05:25
     
    */
    public class BracketChecker{
        
    private String input;        // 輸入:待檢查的表達式
        private boolean isValid;    // 是否檢查通過
        private String checkResult;        // 輸出:檢查結果
        
        
    /**
         * 構造函數
         * 
    @param input
         
    */
        
    public BracketChecker(String input){
            
    this.input=input;
            
    this.isValid=false;
            
    this.checkResult="";
            
            check();
        }
        
        
    /**
         * 執行檢查
         * 
         * 說明:
         * 創建時間:2011-1-15 上午08:09:25
         
    */
        
    private void check(){
            
    int length=input.length();
            MyStack
    <Character> stack=new MyStack<Character>(length);
            
            
    for(int i=0;i<length;i++){
                
    char c=input.charAt(i);
                
                
    switch(c){
                    
    case '{':
                    
    case '[':
                    
    case '(':
                        stack.push(c);
                        
    break;
                    
    case '}':
                    
    case ']':
                    
    case ')':
                        
    if(stack.isEmpty()==false){
                            
    char top=stack.pop();
                            
                            
    if( (c=='}' && top!='{'|| (c==']' && top!='['|| (c==')' && top!='(') ){
                                isValid
    =false;
                                checkResult
    ="經檢查,表達式'"+input+"'中,位于第"+(i+1)+"的字符‘"+c+"’沒有對應的匹配項";
                                
    return;
                            }
                        }
                        
    else{
                            isValid
    =false;
                            checkResult
    ="經檢查,表達式'"+input+"'中,位于第"+(i+1)+"的字符‘"+c+"’沒有對應的匹配項";
                            
    return;
                        }
                        
    break;
                    
    default:
                        
    break;
                }
            }
            
            
    if(stack.isEmpty()==false){
                isValid
    =false;
                checkResult
    ="經檢查,表達式'"+input+"'中右括號缺失,匹配不完整";
                
    return;
            }
            
    else{
                isValid
    =true;
                checkResult
    ="經檢查,表達式'"+input+"'中括號匹配無誤.";
                
    return;
            }
        }

        
    /**
         * 括號是否匹配
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:39:38
         
    */
        
    public boolean isValid() {
            
    return isValid;
        }

        
    /**
         * 取得檢查結果
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:39:27
         
    */
        
    public String getCheckResult() {
            
    return checkResult;
        }
        
        
    public static void main(String[] args){
            String[] arr
    ={"1+(2/3-4","[1+(2/3-4)]*5","{[1+(2/3-4)]*5+(6+2*3)}*7","{[1+(2/3-4]*5+(6+2*3)}*7"};
            
            
    for(String str:arr){
                BracketChecker c
    =new BracketChecker(str);
                System.out.println(c.getCheckResult());
            }
        }
    }

    檢查結果:
    經檢查,表達式'1+(2/3-4'中右括號缺失,匹配不完整
    經檢查,表達式
    '[1+(2/3-4)]*5'中括號匹配無誤.
    經檢查,表達式
    '{[1+(2/3-4)]*5+(6+2*3)}*7'中括號匹配無誤.
    經檢查,表達式
    '{[1+(2/3-4]*5+(6+2*3)}*7'中,位于第11的字符‘]’沒有匹配項


    參考書籍:SAMS的《Java數據結構與算法》第四章

    posted on 2011-01-15 08:49 何楊 閱讀(732) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 女人18毛片a级毛片免费| 无码人妻一区二区三区免费看| 日韩电影免费在线观看中文字幕| 亚洲人成无码网WWW| eeuss免费天堂影院| 亚洲综合久久夜AV | 国产免费内射又粗又爽密桃视频| 亚洲视频人成在线播放| caoporm超免费公开视频| 亚洲精品视频在线观看你懂的| 成年网站免费入口在线观看| 亚洲中文字幕无码永久在线| 啊灬啊灬别停啊灬用力啊免费看| 春暖花开亚洲性无区一区二区 | 亚洲欧洲免费视频| 99久久亚洲综合精品成人网| 日韩视频在线精品视频免费观看| 亚洲精品福利你懂| 免费国产成人高清视频网站| 久青草视频在线观看免费| 久久夜色精品国产亚洲AV动态图| 0588影视手机免费看片| 亚洲午夜精品一区二区麻豆| 免费大片黄手机在线观看| a级毛片在线视频免费观看| 在线jlzzjlzz免费播放| 日韩色视频一区二区三区亚洲| 亚洲性久久久影院| 中文字幕成人免费视频| 亚洲暴爽av人人爽日日碰| 亚洲国产精品成人久久蜜臀| 免费精品99久久国产综合精品| 亚洲国产精品yw在线观看| 日韩精品免费一区二区三区| 9久热精品免费观看视频| 亚洲最新在线视频| 免费又黄又爽又猛的毛片| 久久久久久成人毛片免费看| 亚洲日韩国产欧美一区二区三区| 亚洲一区二区三区在线播放| 亚洲黄色片免费看|