//Filename:StackArray.cpp
//Writed by CaoLichen
//本程序利用数组实现栈的各种操作
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100 //数组上限
//定义顺序栈类型
typedef struct
{
int data[MaxSize]; //
int top; //栈顶指针
}SArray;
//初始化
SArray * InitStack(SArray *s)
{
s = (SArray *)malloc(sizeof(SArray));
s->top = -1; //栈顶指针初始化为-1
return s; //返回栈地址
}
//进栈
void Push(SArray *s, int data)
{
if(s->top == MaxSize-1){
printf("栈溢出,进栈失败\n");
return;
}
s->top ++;
s->data[s->top] = data;
printf("进栈成功!\n");
}
//出栈
void Pop(SArray *s)
{
if(s->top == -1){
printf("栈为空,出栈失败");
return ;
}
s->top --;
printf("出栈成功\n");
}
//打印栈
void PrintStack(SArray *s)
{
int num = s->top;
for(; num > -1; num --){
printf("%d ",s->data[num]);
}
printf("\n打印栈成功!\n");
}
//销毁栈
void ClearStack(SArray *s)
{
free(s);
}
//求栈的长度
int LengthStack(SArray *s)
{
return(s->top + 1);
}
int main()
{
SArray *s;
s = NULL;
s = InitStack(s); //初始化
int i;
for(i = 0; i < 20; i ++){
Push(s,i);
PrintStack(s);
}
for(i = 0; i < 20; i ++){
Pop(s);
PrintStack(s);
}
ClearStack(s);
return 0;
}
利用数组实现栈的一些操作
最新推荐文章于 2022-10-23 10:40:29 发布