<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视频全免费网站色窝 美女被cao网站免费看在线看 | jizz18免费视频| 国产精品免费视频网站| 亚洲免费网站观看视频| 高清国语自产拍免费视频国产| 在线观看亚洲AV日韩A∨| 成人免费一区二区无码视频| 亚洲白色白色在线播放| 久久久久国色AV免费观看性色 | 亚洲熟妇丰满xxxxx| 午夜毛片不卡高清免费| 国产天堂亚洲国产碰碰| 亚洲人妻av伦理| 成年免费a级毛片免费看无码| 亚洲国产成人片在线观看| 182tv免费视视频线路一二三 | 亚洲自偷自拍另类图片二区| 皇色在线视频免费网站| 风间由美在线亚洲一区| 亚洲精品一级无码鲁丝片| 久久99热精品免费观看动漫| 亚洲国产精品久久人人爱| 成年女人免费视频播放77777| 色噜噜噜噜亚洲第一| 国产亚洲精品拍拍拍拍拍| 67194成手机免费观看| 亚洲熟女综合一区二区三区| 亚洲精品A在线观看| 久久99精品免费视频| 亚洲精品无码久久久久秋霞| 国产亚洲情侣一区二区无| 91高清免费国产自产拍2021| 亚洲精品精华液一区二区| 国产亚洲AV夜间福利香蕉149| 亚洲免费观看网站| 美女被暴羞羞免费视频| 无码专区—VA亚洲V天堂| 色视频色露露永久免费观看| 一级特黄a免费大片| 亚洲精品国产手机| 亚洲午夜激情视频|