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

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

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

    隨筆-126  評論-247  文章-5  trackbacks-0

     
    堆棧 ( stack ),也可直接稱棧。堆棧數據結構只允許在一端進行操作,并按照后進先出( LIFO, Last In First Out )的原理運作。

    堆棧數據結構使用兩種基本操作:

    壓棧( push ) :將數據放入堆棧的頂端,堆棧頂端指針指標+1。

    彈棧( pop )   :將頂端數據資料輸出,堆棧頂端指針指標-1。

     

     

     


    /**
     * <!--
     * File   : stack.h
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-03
     * --!>
     
    */
    #include 
    <stdio.h>
    #include 
    <stdlib.h>
    #include 
    <malloc.h>
    #define Element char
    #define INIT_SIZE 10
    #define INCREMENT_SIZE INIT_SIZE / 2

    typedef 
    struct TStack {
        Element 
    *base;
        Element 
    *top;
        
    int size;
    *Stack;

    //棧的構造器,創建空棧
    void stackConstructor(Stack &stack){
        stack
    ->base = (Element *)malloc(INIT_SIZE * sizeof(Element));
        
    if(!stack->base){
            printf(
    "\n為棧分配內存空間失敗!\n");
            exit(
    0);
        }
        stack
    ->top = stack->base//空棧 top == base
        stack->size = INIT_SIZE;
    }

    //是否為空棧
    bool isEmpty(Stack stack){
        
    if(stack->top == stack->base){
            
    return true;
        }
        
    return false;
    }

    //壓棧
    bool push(Stack &stack, Element e){
        
    if(stack->top - stack->base >= stack->size){  //棧滿
            stack->base = (Element *)realloc(stack->base, (stack->size + INCREMENT_SIZE) * sizeof(Element));
            
    if(!stack->base){
                printf(
    "\n為棧擴展內存空間失敗!\n");
                
    return false;
            }
            stack
    ->top = stack->base + stack->size;
            stack
    ->size += INCREMENT_SIZE;
        }
        
    *stack->top++ = e;
        
    return true;
    }

    //彈棧
    Element pop(Stack stack){
        
    if(isEmpty(stack)){
            printf(
    "\n棧為空,彈棧操作失敗!\n");
            
    return ' ';
        }
        
    return *--stack->top;
    }

     


    /**
     * <!--
     * File   : Stack.cpp
     * Author : fancy
     * Email  : fancydeepin@yeah.net
     * Date   : 2013-02-03
     * --!>
     
    */
    #include 
    "stack.h"

    int main() {

        Stack stack;
        stackConstructor(stack);
        push(stack, 
    'f');
        push(stack, 
    'a');
        push(stack, 
    'n');
        push(stack, 
    'c');
        push(stack, 
    'y');
        printf(
    "%c", pop(stack));
        printf(
    "%c", pop(stack));
        printf(
    "%c", pop(stack));
        printf(
    "%c", pop(stack));
        printf(
    "%c", pop(stack));
        
    //output[result]: ycnaf
        return 0;
    }
     

     


     



      
    posted on 2013-02-03 06:40 fancydeepin 閱讀(1569) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品中文字幕乱码影院| 亚洲人成亚洲人成在线观看| 亚洲成aⅴ人在线观看| 精品免费视在线观看| 亚洲色成人网站WWW永久| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 久久国产乱子伦精品免费一| 国产∨亚洲V天堂无码久久久| a国产成人免费视频| 亚洲2022国产成人精品无码区| 久久青草免费91线频观看不卡| 亚洲一区二区中文| 999国内精品永久免费视频| 亚洲国产精品久久人人爱| 亚洲日韩精品无码专区网址 | 亚洲Av永久无码精品黑人| 全黄a免费一级毛片人人爱| 日本一区二区在线免费观看 | 亚洲人成影院在线观看| 国产羞羞的视频在线观看免费| 亚洲国产精品热久久| 免费A级毛片无码无遮挡内射| 亚洲午夜成人精品无码色欲| 免费在线观看毛片| a级毛片免费全部播放无码| 亚洲色大成网站www永久| 夫妻免费无码V看片| 一级日本高清视频免费观看| 97se亚洲综合在线| 日本a级片免费看| 亚洲经典在线观看| 国产真人无遮挡作爱免费视频| 精品国产污污免费网站入口在线| 国产免费久久精品| 亚洲Aⅴ在线无码播放毛片一线天 亚洲avav天堂av在线网毛片 | 老牛精品亚洲成av人片| 亚洲av永久无码制服河南实里| 999久久久免费精品国产| 亚洲免费一区二区| 亚洲av无码不卡久久| 亚洲日韩中文无码久久|