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

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


    網站導航:
     
    主站蜘蛛池模板: APP在线免费观看视频| 久久青青成人亚洲精品| 91精品成人免费国产片| 国产大片免费天天看| 色偷偷亚洲第一综合| 亚洲一区二区三区深夜天堂| 久久精品亚洲综合一品| 亚洲最大激情中文字幕| 免费观看午夜在线欧差毛片| 毛片基地免费视频a| 18以下岁毛片在免费播放| 国产日韩AV免费无码一区二区| 窝窝影视午夜看片免费| 国产偷国产偷亚洲清高APP| 亚洲a级片在线观看| 亚洲午夜国产精品无卡| 久久久久久亚洲精品成人| 亚洲av无码乱码国产精品| 337p日本欧洲亚洲大胆裸体艺术| 免费在线观看视频a| 国产男女猛烈无遮挡免费视频 | 亚洲国产精品自产在线播放| 成人免费看黄20分钟| 国产精品免费观看久久| 妻子5免费完整高清电视| 亚洲免费福利视频| 久草免费在线观看视频| 1000部啪啪毛片免费看| 日本人的色道免费网站| 日本最新免费网站| 免费无码AV电影在线观看| 国产免费av片在线看| 老司机永久免费网站在线观看| 成全高清视频免费观看| 日韩免费高清一级毛片在线| 日韩午夜免费视频| 亚洲?V乱码久久精品蜜桃| 亚洲免费日韩无码系列| 亚洲精品中文字幕无码蜜桃| 久久国产精品亚洲一区二区| 亚洲精品在线观看视频|