#ifndef _LIST_STACK_H_ #define _LIST_STACK_H_ #include <stdio.h> #include <stdlib.h> #define LIST_MAX_NUM typedef int ElemType; typedef struct{ ElemType data; LNode *next; }LNode; typedef struct{ int elemNum; LNode *top; }LiStack; int InitStack(LiStack *L); /* 判断栈是否为空 */ int IsEmpty(LiStack *L); /* 判断栈是否为空 */ int IsFull(LiStack *L); int Push(LiStack *L, ElemType *data); int Pop(LiStack *L, ElemType *data); /* 获得栈顶元素 */ int GetTop(LiStack *L,, ElemType *E); /* 销毁栈,释放栈所占空间 */ int ClearStack(LiStack *L); #endif ==================================================================== #include "stack.h" int InitStack(LiStack *L) { L->elemNum = 0; L->top = NULL; } /* 判断栈是否为空 */ int IsEmpty(LiStack *L) { return (NULL == L->top && 0 == L->elemNum); } /* 判断栈是否为空 */ int IsFull(LiStack *L) { return (NULL != L->top && MAX_NUM == L->elemNum); } int Push(LiStack *L, ElemType *data) { if(IsFull(L)) { return -1; } L->top->next = data; L->top = L->top->next; } int Pop(LiStack *L, ElemType *data); /* 获得栈顶元素 */ int GetTop(LiStack *L,, ElemType *E); /* 销毁栈,释放栈所占空间 */ int ClearStack(LiStack *L); |
|