<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲系列中文字幕| 久久亚洲精品成人AV| 亚洲综合无码无在线观看| 最近的中文字幕大全免费8| 亚洲电影中文字幕| 久久国产乱子伦精品免费一| 伊人久久精品亚洲午夜| 久久久久久国产a免费观看不卡| 亚洲国产成人精品女人久久久| 国产亚洲精品免费| 亚洲AV无码专区日韩| 一级毛片免费不卡| 亚洲AV无码AV男人的天堂| 人妻丰满熟妇无码区免费| 亚洲精品第五页中文字幕| 国产成人无码免费看视频软件| 亚洲日韩乱码中文字幕| 亚洲成人高清在线| 波多野结衣免费一区视频| 亚洲神级电影国语版| 全免费一级毛片在线播放| 在线观看亚洲电影| 亚洲日韩欧洲乱码AV夜夜摸| 嫩草成人永久免费观看| 激情综合亚洲色婷婷五月| 国产精品黄页在线播放免费| WWW免费视频在线观看播放| 7777久久亚洲中文字幕蜜桃| 成人免费毛片内射美女-百度| 美国毛片亚洲社区在线观看| 亚洲日本乱码在线观看| 18禁美女黄网站色大片免费观看 | 91在线视频免费看| 国产亚洲综合久久| 亚洲一区二区影院| 四虎影在线永久免费四虎地址8848aa| 久久精品成人免费国产片小草| 亚洲精品免费在线视频| 亚洲精品人成无码中文毛片| 在线看片免费人成视久网| 污污视频免费观看网站|