前言:
代码用C语言实现,有效果图和代码,代码可直接运行
共享栈和链栈代码就不写了
效果图:
#include <stdio.h>
#include <stdbool.h>
#define MaxSize 150
typedef int ElemType;
typedef struct{
ElemType data[MaxSize]; //存放栈中元素
int top; //栈顶指针
}SqStack;
/*初始化栈*/
void InitStack(SqStack *S)
{
S->top=-1; //初始化栈,没有数据,栈顶指针默认为-1,有数据了依次往上升
}
/*判断栈是否为空,也就是栈有没有数据*/
bool EmptyStack(SqStack S)
{
if(S.top==-1){ //栈顶指针是-1,栈里面没有数据
return true;
}else{
return false; //栈不为空
}
}
/*进栈操作*/
bool PushStack(SqStack *S,ElemType e)
{
if(S->top==(MaxSize-1)) //栈满了
return false;
S->top=S->top+1;
S->data[S->top]=e;
return true;
}
/*出栈操作*/
bool PopStack(SqStack *S,ElemType *e)
{
if(S->top==-1) //栈是空的
return false;
e = S->data[S->top];
S->top = S->top - 1;
return true;
}
/*找栈顶元素*/
bool GetTop(SqStack *S,ElemType *e)
{
if(S->top==-1) //栈是空的
return false;
e = S->data[S->top];
return true;
}
int main(void)
{
SqStack stack;
InitStack(&stack); //初始化栈
for(int i=0 ; i<=10 ; i++)
{
PushStack(&stack,i);
}
for(int i=0 ; i<=stack.top ; i++)
{
printf("栈值:%d \t栈顶指针:%d\n",stack.data[i],stack.top);
}
return 0;
}