头文件:栈.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
//函数接口:
typedef int SDataType;
typedef struct Stack {
SDataType array[100];
int top;
} Stack;
// 初始化
void StackInit(Stack *pStack){
pStack->top = 0;
*(pStack->array) = { 0 };
}
// 压栈
void StackPush(Stack *pStack, SDataType data)
{
if (pStack->top == 0)
{
*(pStack->array) = data;
pStack->top++;
return;
}
pStack->array[pStack->top] = data;
pStack->top++;
return;
}
// 出栈
void StackPop(Stack *pStack)
{
pStack->top--;
pStack->array[pStack->top] = pStack->array[pStack->top + 1];
}
// 返回栈顶元素
SDataType StackTop(Stack *pStack)
{
//StackPop(pStack);
return pStack->array[pStack->top-1];
}
// 判断是否为空
// 1 空
// 0 不空
int StackIsEmpty(Stack *pStack)
{
if (pStack->top == 0)
return 1;
else
return 0;
}
// 返回数据个数
int StackSize(Stack *pStack)
{
return pStack->top;
}
void test()
{
Stack pStack;
StackInit(&pStack);
StackPush(&pStack, 2);
StackPush(&pStack, 4);
StackPush(&pStack, 7);
StackPush(&pStack, 8);
StackPush(&pStack, 1);
StackPush(&pStack, 5);
StackPush(&pStack, 0);
StackPush(&pStack, 3);
StackPush(&pStack, 12);
int a = StackSize(&pStack);//返回数据个数
SDataType tt = StackTop(&pStack);//返回栈顶元素
StackPop(&pStack);//出栈
a = StackSize(&pStack);//返回数据个数
tt = StackTop(&pStack);//返回栈顶元素
}
源文件:main.h
#include"栈.h"
int main()
{
test();
system("pause");
return 0;
}