Stack.h
#pragma once #include <stdio.h> #include <assert.h> #include <malloc.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 12 typedef int DataType; typedef struct Stack { DataType _array[MAX_SIZE];// int _top; }Stack; //栈的初始化 void StackInit(Stack* s); //入栈 void StackPush(Stack* s,DataType data); //出栈 void StackPop(Stack* s); //获取栈顶元素 DataType StackTop(Stack* s); //获取栈中元素个数 int StackSize(Stack* s); //检测栈是否为空 int StackEmpty(Stack* s); //打印栈中的元素 void StackPrint(Stack* s);
Stack.c
#define _CRT_SECURE_NO_WARNING 1 #include "Stack.h" //栈的初始化 void StackInit(Stack* s) { if(NULL == s) return; s->_top = 0; } //入栈 void StackPush(Stack* s,DataType data) { assert(s); if(MAX_SIZE == s->_top) return; s->_array[s->_top] = data; s->_top++; } //出栈 void StackPop(Stack* s) { assert(s); if(0 == s->_top) { printf("栈已空!!!\n"); return; } s->_top--; } //获取栈中元素个数 int StackSize(Stack* s) { if(NULL == s) { printf("栈为空!!!\n"); return 0; } return s->_top; } //检测栈是否为空 int StackEmpty(Stack* s) { if(s->_top == 0) return 1; return 0; } //获取栈顶元素 DataType StackTop(Stack* s) { assert(s); if(0 == s->_top) { printf("栈为空没有元素!!!\n"); return 0; } return s->_array[s->_top-1]; } //打印栈中的元素 void StackPrint(Stack* s) { int i = 0; assert(s); for( ; i < s->_top ;i++) { printf("%d--->", s->_array[i]); } printf("NULL\n"); }
test.c
#include "Stack.h" int main() { Stack s; StackInit(&s); StackPush(&s,1); StackPush(&s,2); StackPush(&s,3); StackPush(&s,4); StackPush(&s,5); StackPrint(&s); printf("top is:%d\n",StackTop(&s)); printf("size is:%d\n",StackSize(&s)); StackPop(&s); StackPrint(&s); printf("top is:%d\n",StackTop(&s)); printf("size is:%d\n",StackSize(&s)); return 0; }