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

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

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

    一江春水向東流

    做一個有思想的人,期待與每一位熱愛思考的人交流,您的關注是對我最大的支持。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      44 隨筆 :: 139 文章 :: 81 評論 :: 0 Trackbacks

    /****************a simple stack**********************************/

    #include <stdio.h>

    #define STACK_INIT_SIZE 100
    #define STACKINCREMENT? 10
    typedef int bool;
    #define TRUE?? 1
    #define FALSE? 0
    typedef struct
    {
    ?char *base;
    ?char *top;
    ?int stacksize;
    }sqStack;

    //=======================function protoType=============================
    bool InitStack(sqStack *stk);
    bool DestroyStack(sqStack *stk);
    bool ClearStack(sqStack *stk);
    bool StackEmpty(sqStack stk);
    int? StackLength(sqStack stk);
    bool GetTop(sqStack stk, char *item);
    bool Push(sqStack *s, char item);
    bool Pop(sqStack *s, char *item);

    bool InitStack(sqStack *stk)
    {
    ?stk->base = (char *)malloc(STACK_INIT_SIZE * sizeof(char));
    ?if (!stk->base)
    ?return FALSE;
    ?stk->top = stk->base;
    ?stk->stacksize = STACK_INIT_SIZE;
    ?return TRUE;
    }

    bool GetTop(sqStack stk, char *item)
    {
    ?if (stk.top == stk.base)
    ?return FALSE;
    ?item = (stk.top-1);
    ?return TRUE;
    }

    bool Push(sqStack *stk, char item)
    {
    ?if (stk->top - stk->base >= stk->stacksize)
    ?{
    ??printf("allocate New Mem\n");
    ??stk->base = (char *)realloc(stk->base, (stk->stacksize + STACKINCREMENT)* sizeof(char));
    ??if (!stk->base)
    ??return FALSE;
    ??stk->top = stk->base + stk->stacksize;
    ??stk->stacksize += STACKINCREMENT;
    ?}
    ?*stk->top = item;
    ?stk->top++;
    ?return TRUE;
    }

    bool Pop(sqStack *stk, char* item)
    {
    ?if (stk->top == stk->base)
    ?return FALSE;
    ?stk->top--;
    ?*item = *(stk->top);
    ?return TRUE;
    }

    bool StackEmpty(sqStack stk)
    {
    ?if (stk.top == stk.base)
    ?return TRUE;
    ?else
    ?return FALSE;
    }

    bool ClearStack(sqStack *stk)
    {
    ?stk->top = stk->base;
    ?memset(stk->base, 0, sizeof(char));
    ?if (stk->top)
    ?return TRUE;
    ?else
    ?return FALSE;
    }
    bool DestroyStack(sqStack *stk)
    {
    ?free(stk->base);
    ?printf("free memery\n");
    ?return TRUE;
    }????

    int main(int argc, char** argv)
    {
    ?sqStack stk;
    ?char ch;
    ?InitStack(&stk);
    ?ch = getchar();
    ?while(ch != EOF)
    ?{
    ??while(ch != EOF && ch != '\n')
    ??{
    ???switch (ch)
    ???{
    ????? case '#':
    ????Pop(&stk, &ch);
    ????break;
    ????? case '@':
    ????? ?ClearStack(&stk);
    ????? ?break;
    ????? case 'q':???????
    ??????? DestroyStack(&stk);
    ??????? exit(1);
    ??????? break;???????
    ????? default:
    ?????? Push(&stk, ch);
    ???}
    ???ch = getchar();
    ??}
    ??ClearStack(&stk);
    ??if (ch != EOF)
    ??ch = getchar();
    ?}
    ?DestroyStack(&stk);?
    ?return 1;
    }

    特別要注意的是堆棧的中操作棧頂的值,在就是對內存的操作

    posted on 2007-11-13 22:00 allic 閱讀(505) 評論(0)  編輯  收藏 所屬分類: 算法及數據結構
    主站蜘蛛池模板: 亚洲AV无码乱码在线观看代蜜桃| 亚洲国产成人片在线观看| 亚洲国产精品乱码在线观看97 | 自拍偷自拍亚洲精品偷一| 好吊妞788免费视频播放| 亚洲专区一路线二| 最近的免费中文字幕视频| 久久国产亚洲精品| 日本特黄a级高清免费大片| 亚洲AV无码专区亚洲AV桃| 国产老女人精品免费视频| 男女超爽视频免费播放| 亚洲精品WWW久久久久久| 9久热这里只有精品免费 | 91亚洲一区二区在线观看不卡| 精品无码国产污污污免费网站 | 最近新韩国日本免费观看| 亚洲美女精品视频| 成人无遮挡毛片免费看| 在线观看亚洲网站| 亚洲中文字幕无码中文字在线| 91免费在线视频| 内射少妇36P亚洲区| 成人免费a级毛片| 西西人体大胆免费视频| 亚洲中文字幕无码一区二区三区 | 无码人妻久久一区二区三区免费丨 | 亚洲1234区乱码| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 亚洲精品宾馆在线精品酒店| 国产又黄又爽又刺激的免费网址| 一本大道一卡二大卡三卡免费| 国产亚洲一区二区在线观看| 国产在线jyzzjyzz免费麻豆| 日韩国产精品亚洲а∨天堂免| 国产亚洲精品成人a v小说| 亚洲精品在线免费观看视频 | 亚洲五月综合网色九月色| 免费大片黄手机在线观看| 久草免费手机视频| 亚洲av日韩专区在线观看|