数据结构之堆栈操作

2014-11-24 02:02:55 · 作者: · 浏览: 1
#include  
typedef int ElemType;  
typedef int STATUS;  
#define STACKSIZE 5  
#define OK 1  
#define ERROR 0  
typedef struct  
{  
    int top;  
    int data[STACKSIZE];  
}Stack;  
//堆栈初始化  
void StackInit(Stack *S)  
{  
    S->top=0;  
}  
//堆栈长度计算  
STATUS StackLength(Stack *S)  
{  
    return S->top;  
}  
//堆栈压入  
STATUS PushStack(Stack *S,ElemType e)  
{  
    if(S->top==STACKSIZE)  
        return ERROR;  
    S->data[S->top]=e;  
    S->top++;  
    return OK;  
}  
//堆栈弹出  
int PopStack(Stack *S,ElemType *e)  
{  
    if(S->top==0)  
        return ERROR;  
    S->
top--; *e=S->data[S->top]; return OK; } int main() { Stack stack; int value,flag=0,i; StackInit(&stack); printf("length=%d\n",StackLength(&stack)); for(i=0;i<=5;i++) { flag=PushStack(&stack,i); printf("flag=%d length=%d\n",flag,StackLength(&stack)); } for(i=0;i<=5;i++) { flag=PopStack(&stack,&value); printf("flag=%d value=%d length=%d\n",flag,value,StackLength(&stack)); } return 0; }