含义:用数组实现的栈就是静态栈,缺点是限制了栈的大小,优点是遍历简单
结构代码
typedef struct staticStack{
int data[MAXSIZE];
int top;//栈顶指针
}SqStack,*pStack;
1、初始化
void init_Stack(pStack s){
//将栈顶指向下标为0
s->top=0;
}
2、进栈
void Push(pStack s,int val){
if(s->top==MAXSIZE-1){
printf("栈已满!");
exit(-1);
}
s->data[s->top]=val;
//栈顶加1
s->top++;
}
3、出栈
void POp(pStack s,int *val){
if(s->top==-1){
printf("栈为空!");
exit(-1);
}
*val=s->data[s->top];
//栈顶减1
s->top--;
}
4、遍历
void POp(pStack s,int *val){
if(s->top==-1){
printf("栈为空!");
exit(-1);
}
*val=s->data[s->top];
s->top--;
}
测试代码
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
//函数声明
void Push(pStack s,int val);
void POp(pStack s,int *val);
void show_stack(pStack s);
void init_Stack(pStack s);
int main()
{
SqStack s;
int val;
init_Stack(&s);
//进栈
Push(&s,1);
Push(&s,2);
Push(&s,3);
Push(&s,4);
Push(&s,5);
printf("入栈后的遍历\n");
show_stack(&s);
POp(&s,&val);
printf("出栈后的遍历!\n");
show_stack(&s);
}
测试结果