#ifndef _SUQUENCE_STACK_H_ #define _SUQUENCE_STACK_H_ #include <stdio.h> #include <stdlib.h> #define SUQUENCE_MAX_NUM 100 // 栈中最大元素 typedef int ElemType; typedef struct{ //Elemtype data[MAXSIZE]; // 存放栈中元素 ElemType *data; // 存放栈中元素 int top; // 栈顶指针 }SqStack; /* 初始化栈 */ int InitStack(SqStack *s); /* 判断栈是否为空 */ int IsEmpty(SqStack *s); /* 判断栈是否为空 */ int IsFull(SqStack *s); /* 入栈 */ int Push(SqStack *s, ElemType *E); /* 出栈 */ int Pop(SqStack *s, ElemType *E); /* 获得栈顶元素 */ int GetTop(SqStack *s, ElemType *E); /* 销毁栈,释放栈所占空间 */ int ClearStack(SqStack *s); #endif ================================================================== #include "stack.h" /* 初始化栈 */ int InitStack(SqStack *s) { s->top = 0; // 初始化栈顶 s->data = (ElemType *)malloc(SUQUENCE_MAX_NUM*sizeof(ElemType)); return (NULL != s->data); } /* 判断栈是否为空 */ int IsEmpty(SqStack *s) { return (0 == s->top); } /* 判断栈是否为空 */ int IsFull(SqStack *s) { return (SUQUENCE_MAX_NUM == s->top); } /* 入栈 */ int Push(SqStack *s, ElemType *E) { if(IsFull(s)) { return -1; } s->data[s->top++] = *E; return 0; } /* 出栈 */ int Pop(SqStack *s, ElemType *E) { if(IsEmpty(s)) { return -1; } *E = s->data[--s->top]; return 0; } /* 获得栈顶元素 */ int GetTop(SqStack *s, ElemType *E) { if(IsEmpty(s)) { return -1; } *E = s->data[s->top - 1]; return 0; } /* 销毁栈,释放栈所占空间 */ int ClearStack(SqStack *s) { if(NULL == s) { return -1; } s->top = 0; free(s); return 0; } ================================================================== // main.c #include "stack.h" int main() { SqStack s; ElemType E = 100; InitStack(&s); Push(&s, &E); E = 200; Push(&s, &E); E = 300; Push(&s, &E); while(!IsEmpty(&s)) { Pop(&s, &E); printf("TTT----Pop--elem[%d]\n",E); } return 0; } |
|