|
#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; } |
|
|