• <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>

            jake1036

            隊(duì)列和棧的基本操作

                                          隊(duì)列和棧的基本操作

                 棧的操作,棧是一種先進(jìn)后出的操作,需要注意的是棧的滿與空,棧空的情況是 top == 0 ,棧滿的情況是 top == N 。
                 棧實(shí)現(xiàn)的代碼如下:
                

            #include<iostream>
             
            using namespace std ;
             
            const int N = 100 ;
             
            struct Stack
             
            {
                
            int a [N] ;    
                
            int top    ;    
             }
             ;
             
             
             
            void iniStack(Stack *stack) ;
             
            bool empty(Stack *stack) ;
             
            void push(Stack *stack , int x) ;
             
            int pop(Stack *stack ) ;
             
            bool full(Stack * stack) ;
             
             
            int main()
             
            {
                Stack 
            * stack = new Stack ;
                iniStack(stack) ;
                push(stack , 
            4);
                push(stack , 
            5) ;
                cout
            <<pop(stack) ;
                cout
            <<pop(stack) ;
                cin.
            get() ;
              
              
            return 0 ;    
             }

             
             
            void push(Stack *stack , int x) 
             
            {
               
            if(!full(stack))
                  
            {
                    stack
            ->a[stack->top++= x ;
                                  
                  }
             
               
            else 
                  cout
            <<"error full"<<endl ;
             }

             
             
            int pop(Stack * stack)
             
            {
               
            if(empty(stack))  
                 
            return - 1 ;
               
            else
                
            return stack->a[--stack->top] ;
                   
             }
              
              
              
              
            void iniStack(Stack * stack)
              
            {
                stack
            ->top = 0 ;      
              }


              
            bool empty(Stack * stack)
              
            {
                
            return stack->top == 0 ;       
              }

              
              
            bool full(Stack * stack)
               
            {
                 
            return stack->top == N ;     
               }

              
              
               
               
             

               
             


            2 隊(duì)列的操作
               隊(duì)列為空的判斷條件,tail == head 。隊(duì)列采用head插入,TAIL彈出。

               隊(duì)列為滿的條件是,(HEAD + 1) % N = TAIL。
              
              

               代碼如下:
                

            #include <iostream>
             
            using namespace std ;
             
            const int N = 10 ;
             
            struct Queue
             
            {
                
            int head ; //頭部插入    
                int tail ; //尾部取出    
                int a[N] ;    
             }
             ;
             
             
            bool empty(Queue * queue) ;
             
            bool full (Queue * queue) ;
             
            void enqueue( Queue * queue , int x) ;
             
            int  dequeue(Queue * queue) ;
             
            void iniQueue(Queue * queue) ;
             
            int main()
             
            {
               Queue 
            * queue = new Queue ;
               iniQueue(queue);
               enqueue(queue , 
            4) ;
               enqueue(queue , 
            5) ;
               cout
            <<dequeue(queue) ;
               cout
            <<dequeue(queue) ;
               cin.
            get() ;
               
            return 0 ;    
             }
             

             
            void iniQueue(Queue * queue)
             
            {
               queue
            ->head = 0 ;
               queue
            ->ta il = 0 ;        
             }


              
            void enqueue( Queue * queue , int x)
              
            {
                   
            if(!full(queue))
                   
            {
                    queue
            ->a[queue->head++]  = x;                
                   }

                   
            else
                    cout
            <<"full"<<endl ;
              }


              
            int dequeue(Queue * queue) 
              
            {
                
            if(!empty(queue))
                  
            {
                    
            return queue->a[queue->tail++] ;             
                  }

                  
            else
                  
            {
                  cout
            <<"empty"<<endl;  
                   
            return -1 ;
                  }

              }

              
              
              
            bool empty(Queue * queue)
              
            {
                
            return queue->tail == queue->head ;        
              }

              
               
            bool full(Queue * queue)
               
            {
                
            return (queue->head + 1 ) % N == queue->tail ;      
               }

              





             

            posted on 2011-04-10 10:42 kahn 閱讀(798) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 算法相關(guān)

            Feedback

            # re: 隊(duì)列和棧的基本操作 2011-12-11 07:19 jemmyLiu

            博主判斷隊(duì)列滿的情況好像不對(duì)
            bool full(Queue* queue)
            {
            if (queue->head != 0)
            {
            return (queue->head)%N == queue->tail;
            }

            return false;
            }
            是否是我寫錯(cuò)了 請(qǐng)指教  回復(fù)  更多評(píng)論   


            久久婷婷色香五月综合激情| 久久电影网一区| 久久天天躁狠狠躁夜夜96流白浆| 日韩精品久久无码人妻中文字幕 | 欧美日韩中文字幕久久久不卡 | 99久久婷婷国产综合亚洲| 香港aa三级久久三级| 国产成人精品三上悠亚久久| 久久se精品一区二区| 综合久久精品色| 99久久精品国产毛片| 精品久久久久久久无码| 久久亚洲视频| 久久99精品久久久久久水蜜桃| 久久国产色AV免费观看| 国产精品久久久久久久久久影院| 91久久精品国产成人久久| 青草国产精品久久久久久| 欧美日韩精品久久久久| 国产精品欧美亚洲韩国日本久久| 天天爽天天狠久久久综合麻豆| 午夜福利91久久福利| 久久综合综合久久97色| 国产精品久久久亚洲| 亚洲AV无码久久精品成人| 午夜精品久久久久久影视riav| 99久久夜色精品国产网站| 久久久久亚洲Av无码专| 亚洲中文字幕无码一久久区| 久久99国产精品久久99小说| 久久久综合香蕉尹人综合网| 狠狠精品干练久久久无码中文字幕| 成人资源影音先锋久久资源网| 久久精品毛片免费观看| 色偷偷偷久久伊人大杳蕉| 久久AV高潮AV无码AV| 中文字幕无码av激情不卡久久| 久久亚洲av无码精品浪潮| 久久性生大片免费观看性| 亚洲国产精品一区二区三区久久 | 伊人热热久久原色播放www|