中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

壓棧出棧遍歷棧實(shí)例代碼

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
    #include<stdio.h>  
    #include<stdlib.h>  
    #include<malloc.h>  
      
    typedef struct Node//定義一個(gè)鏈表結(jié)構(gòu)體  
    {  
        int data;  
        struct Node* pNext;  
    }NODE,*PNODE;  
      
    typedef struct Stack//定義一個(gè)棧結(jié)構(gòu)體  
    {  
        PNODE pTop;  
        PNODE pBottom;  
    }STACK,*PSTACK;  
      
    void initStack(PSTACK);  
    void pushStack(PSTACK,int);  
    void travelStack(PSTACK);  
    bool popStack(PSTACK,int*);  
    void clear(PSTACK ps);  
    int main()  
    {  
        int val;  
        STACK S;//定義一個(gè)S變量,該變量有兩個(gè)參數(shù)。一個(gè)pTop,一個(gè)pBotton   
        initStack(&S);//初始化棧  
        pushStack(&S,1);//壓棧  
        pushStack(&S,2);  
        pushStack(&S,3);  
        pushStack(&S,4);  
        pushStack(&S,5);  
          
        travelStack(&S);//遍歷輸出  
          
        if(popStack(&S,&val))//判斷是否出棧成功  
        {  
            printf("出棧成功,出棧元素是%d\n",val);  
        }  
        else  
        {  
            printf("出棧失敗\n");  
        }  
        printf("出棧后遍歷輸出結(jié)果\n");  
        travelStack(&S);//遍歷輸出  
        clear(&S);  
        printf("再次遍歷下面為空白,說(shuō)明清空成功!\n");  
        travelStack(&S);//遍歷輸出  
          
        return 0;  
    }  
      
    void initStack(PSTACK ps)//初始化棧,讓棧里面的兩個(gè)元素指向一個(gè)節(jié)點(diǎn)。  
    {  
        ps->pTop=(PNODE)malloc(sizeof(NODE));  
        if(NULL==ps->pTop)  
        {  
            printf("動(dòng)態(tài)內(nèi)存分配失敗\n");  
            exit(-1);  
        }  
        else  
        {  
            ps->pBottom=ps->pTop;  
            ps->pTop->pNext=NULL;//等價(jià)于:ps->pBottom->pNext=NULL;也就是說(shuō)下一次插入的空間是空的。也就是棧頂元素下一個(gè)是空的  
        }  
    }  
      
    void pushStack(PSTACK ps,int val)//壓棧函數(shù)  
    {  
        PNODE pNew=(PNODE)malloc(sizeof(NODE));  
        pNew->data=val;  
        pNew->pNext=ps->pTop;//每次都把元素壓到棧頂  
        ps->pTop=pNew;  
    }  
      
    void travelStack(PSTACK ps)//遍歷棧  
    {  
        PNODE p=ps->pTop;  
          
        while(p!=ps->pBottom)  
        {  
            printf("%d ",p->data);  
            p=p->pNext;  
        }  
        printf("\n");  
        return ;  
    }  
      
    bool empty(PSTACK ps)//判斷棧是否為空  
    {  
        if(ps->pTop==ps->pBottom)  
        return true;  
        else  
        return false;  
    }  
      
    //把ps所指向的棧出棧一次,并把出棧的元素存入pVal形參所指向的變量中  
    //如果出棧失敗,返回false,否則,返回true  
    bool popStack(PSTACK ps,int* pVal)  
    {  
        if(empty(ps))  
        {  
            return false;  
        }  
        else  
        {  
            PNODE r=ps->pTop;  
            *pVal=r->data;  
            ps->pTop=r->pNext;  
            free(r);  
            r=NULL;  
            return true;  
        }  
    }  
      
      
    //最后把棧清空。  
    void clear(PSTACK ps)  
    {  
        if(empty(ps))  
        {  
            return ;  
        }  
      
        else  
        {  
            PNODE p=ps->pTop;  
            PNODE q=NULL;  
              
            while(p!=ps->pBottom)  
            {  
                q=p->pNext;  
                free(p);  
                p=q;  
            }  
      
            ps->pTop=ps->pBottom;  
        }  
          
    }  

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇: jquery操作checkbox

下一篇:用 python 實(shí)現(xiàn)各種排序算法