스택 구조(C 언어)

2163 단어
# include 
# include 
# include 

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

//   
typedef struct Stack
{
    PNODE pTop;         //     
    PNODE pBottom;      //     
}STACK, * PSTACK;

//     
void init(PSTACK pS);
//  
void push(PSTACK pS,int val);
//       
bool isEmpty(PSTACK pS);
//  
bool pop(PSTACK pS,int * val);
//    
void traverse(PSTACK pS);

int main(void)
{   
    STACK S;
    int val;

    init(&S);
    push(&S,1);
    push(&S,2);
    push(&S,3);
    push(&S,4);

    traverse(&S);

    if(pop(&S,&val)){
        printf("      %d 
", val); }else{ printf("
"); } traverse(&S); 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)); if(pNew == NULL){ printf(" "); exit(-1); }else{ pNew->data = val; // pNew->pNext = pS->pTop; // pTop; pS->pTop = pNew; // pTop } } void traverse(PSTACK pS) { PNODE p = pS->pTop; while(p != pS->pBottom) // { printf("%d ",p->data); p = p->pNext; } printf("
"); } bool isEmpty(PSTACK pS) { if(pS->pTop == pS->pBottom){ return true; }else{ return false; } } // bool pop(PSTACK pS,int * val) { if(isEmpty(pS)){ return false; }else{ PNODE r = pS->pTop; // * val = r->data; // pS->pTop = r->pNext; // top free(r); r = NULL; return true; } }

좋은 웹페이지 즐겨찾기