動的スタックのストレージ構造及びアルゴリズムC言語実現

2004 ワード

動的スタックのストレージ構造及びアルゴリズムC言語実現
#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 pS)  
{  
    PNODE p = (PNODE)malloc(sizeof(NODE));  //                 
    if (p == NULL)  
    {  
        printf("      ,     
"); exit(-1); } pS->pTop = pS->pBottom = p; p->pNext = NULL; return pS; } // int isEmpty(PSTACK pS) { if (pS->pTop == pS->pBottom) { return 0; } else { return -1; } } // void push(PSTACK pS, int val) { PNODE p = (PNODE)malloc(sizeof(NODE)); if (p == NULL) { printf(" ,
"); exit(-1); } p->pNext = pS->pTop; p->data = val; pS->pTop = p; return; } // void pop(PSTACK pS) { if (isEmpty(pS) == -1) { PNODE p = pS->pTop; // pS->pTop = p->pNext; free(p); } else { printf("
"); } } // void clear(PSTACK pS) { while (isEmpty(pS) != 0) { pop(pS); } } // void traverse(PSTACK pS) { PNODE p = pS->pTop; // p while (p != pS->pBottom) { printf("%d ", p->data); p = p->pNext; } printf("
"); } int main() { PSTACK pS; init(pS); push(pS, 1); push(pS, 2); push(pS, 3); push(pS, 4); push(pS, 5); traverse(pS); clear(pS); traverse(pS); return 0; }