데이터 구조 위조 코드 의 실현 (창고)

데이터 구조 위조 코드 의 실현 (창고)
#include 
#include 
#include 
#include 

typedef struct Node
{
    int data;
    struct Node *pNext;
}NODE,*pNODE;//              

typedef struct Stack
{
    pNODE pTop;//  
    pNODE pBottom;//  
}STACK,*pSTACK;//                     

void init(pSTACK );
void push(pSTACK ,int );
void traverse(pSTACK );
bool pop(pSTACK ,int *);
void clear(pSTACK );
bool is_empty(pSTACK );

int main(void)
{
    STACK s;//     
    int val;

    init(&s);//   
    //    
    push(&s,1);
    push(&s,33);
    push(&s,9);
    push(&s,7);
    push(&s,8);
    //  
    traverse(&s);
    //    
    if(pop(&s,&val))
    {
        printf("    !      :%d
",val); }else printf(" !"); traverse(&s); // clear(&s); if(is_empty(&s)) printf(" !
"); return 0; } void init(pSTACK ps) { ps->pTop=(pNODE)malloc(sizeof(NODE)); if(ps->pTop==NULL) { printf(" !
"); exit(-1); } else { // ps->pBottom=ps->pTop; ps->pTop->pNext=NULL; } } void push(pSTACK ps,int val) { pNODE pNew=(pNODE)malloc(sizeof(NODE));// pNew->data=val; pNew->pNext=ps->pTop;// ps->pTop=pNew;// } void traverse(pSTACK ps) { pNODE p=ps->pTop; while(p!=ps->pBottom) { printf("%d\t",p->data); p=p->pNext; } printf("
"); } bool is_empty(pSTACK ps) { if(ps->pBottom==ps->pTop) return true; else return false; } // bool pop(pSTACK ps,int *pval) { if(is_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(is_empty(ps)) return ; else { pNODE p=ps->pTop; pNODE q=NULL; while(p!=ps->pBottom) { // q p , free p, q p q=p->pNext; free(p); p=q; } ps->pTop=ps->pBottom; } }

좋은 웹페이지 즐겨찾기