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

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

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

    一江春水向東流

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

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      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;
    }

    特別要注意的是堆棧的中操作棧頂?shù)闹?,在就是對?nèi)存的操作

    posted on 2007-11-13 22:00 allic 閱讀(504) 評論(0)  編輯  收藏 所屬分類: 算法及數(shù)據(jù)結(jié)構(gòu)
    主站蜘蛛池模板: 1000部拍拍拍18勿入免费视频下载 | 国产一卡2卡3卡4卡无卡免费视频| 国产高清免费视频| 在线观看无码AV网站永久免费| 天天看免费高清影视| 免费人妻无码不卡中文字幕18禁 | 永久免费av无码不卡在线观看| 成年女人18级毛片毛片免费 | 男男gvh肉在线观看免费| 国产99精品一区二区三区免费| 永久在线观看免费视频| 国产曰批免费视频播放免费s| 国外成人免费高清激情视频| 亚洲人成影院在线观看| 久久精品国产亚洲AV香蕉| 亚洲综合中文字幕无线码| 黄页网站在线视频免费| 精品免费视在线观看| 美女视频黄的全免费视频| 亚洲精品无码激情AV| 91久久亚洲国产成人精品性色 | 青娱乐免费视频在线观看| 免费永久在线观看黄网站| 亚洲精品乱码久久久久久蜜桃不卡| 亚洲春色另类小说| 国产产在线精品亚洲AAVV| 久久久久久免费一区二区三区 | 亚洲精品成人久久| 视频免费1区二区三区| 亚洲黄色免费网站| 亚洲av成人一区二区三区在线观看 | 国产免费无码AV片在线观看不卡| 中文字幕av无码无卡免费| 亚洲中文字幕无码专区| 亚洲国产亚洲综合在线尤物| 成年网在线观看免费观看网址 | 日韩电影免费观看| 日本a级片免费看| 久久亚洲私人国产精品vA| 美女免费视频一区二区| 国产a视频精品免费观看|