#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
const int max = 5;
typedef int position;
struct stack{
int maxsize;/* 堆栈的最大容量 */
int *num; /* 储存数据的数组 */
int TopOfStack;/* 栈顶的指针 */
};
typedef struct stack *Stack;
/* 创建一个栈 */
Stack Create(int maxsize)
{
Stack S = (Stack)malloc(sizeof(struct stack));
S->num = (int*)malloc(maxsize * sizeof(int));
S->maxsize = maxsize;
S->TopOfStack = -1;
return S;
}
/* 判断栈是否满了 */
bool isfull(Stack S)
{
return (S->TopOfStack == S->maxsize - 1);
}
/* 判断是否为空栈 */
bool isempty(Stack S)
{
return (S->TopOfStack == -1);
}
/* 进栈 */
void push(Stack S,int number)
{
if(isfull(S))
{
printf("堆栈满了!");
}
else
{
S->num[++(S->TopOfStack)] = number;
}
}
/* 出栈 */
int pop(Stack S)
{
if(isempty(S))
{
printf("kong!!");
}
else
{
return (S->num[(S->TopOfStack)--]);
}
}
void print(Stack S)
{
for(int i = S->maxsize - 1; i > -1; i--)
{
printf("%d ",S->num[i]);
}
printf("\n");
}
int main(void)
{
Stack S = Create(max);
int number;
for(int i = 0; i < max; i++)
{
scanf("%d",&number);
push(S,number);
}
print(S);
for(int i = 0; i < max; i++)
{
printf("%d\n",pop(S));
}
}
栈的数组实现
最新推荐文章于 2024-07-15 11:03:37 发布