#pragma once
#ifndef STACK_H
#define STACK_H
#define INFINITY 65535 //表示无穷大
#define MAXSIZE 1000 //栈的最大空间
typedef int ElemType; //栈的数据类型#include"Stack.h"
#include<stdio.h>
int main()
{
Stack s;
InitStack(&s);
for (int i = 1; i < 20; i += 2)
Push(&s, i);
Print(&s);
printf("栈顶的元素为:\n");
int k = Top(&s);
printf("%d\n", k);
Clear(&s);
if (IsEmpty(&s))
printf("栈为空\n");
else
printf("栈不为空\n");
return 0;
}
typedef struct{ElemType data[MAXSIZE];//栈的大小int top;//栈的游标}Stack;void InitStack(Stack *s);//初始化栈bool IsEmpty(Stack *s);//判断栈是否为空ElemType Top(Stack *s);//返回栈顶的元素ElemType Pop(Stack *s);//返回并删除栈顶的元素void Push(Stack *s, ElemType e);//将元素e压栈void Print(Stack *s);//输出从栈底到栈顶的元素void Clear(Stack *s);//清空栈元素#endif // !STACK_H
#pragma once
#include"Stack.h"
#include<stdio.h>
void InitStack(Stack *s)//栈初始化
{
s->top = -1;
}
bool IsEmpty(Stack *s)//判断栈是否为空
{
if (s->top == -1)
return true;
return false;
}
ElemType Top(Stack *s)//返回栈顶的元素
{
if (!IsEmpty(s))
return s->data[s->top];
return INFINITY;
}
ElemType Pop(Stack *s)//返回并删除栈顶的元素
{
if (!IsEmpty(s))
return s->data[s->top--];
return INFINITY;
}
void Push(Stack *s, ElemType e)//将元素压栈
{
if (s->top >= MAXSIZE - 1)
return;
s->top++;
s->data[s->top] = e;
}
void Clear(Stack *s)//清空栈
{
s->top = -1;
}
void Print(Stack *s)//打印栈底到栈顶的元素
{
for (int i = 0; i < s->top; ++i)
printf("%d ", s->data[i]);
printf("\n");
}