栈的实现
特点FILO(先进后出)
假设栈的空间为8
top == 0 不能出栈,已到栈底
top == 8 不能入栈,已到栈顶
top始终指向一个待插入的位置
push操作,1.写入数据,2.top++ 3.前提条件是栈非满
pop操作,1.top--,2.弹出数据 3.前提条件是栈非空
#include<stdio.h>
//需要一个连续的空间
typedef struct _Stack{
char mem[1024];
int top;
}Stack;
Stack s;
//判断栈是否为满
int isFull(Stack *ps) {
return ps->top == 1024;//ps-> == 1024时为真,返回1,也就是满的时候返回真
}
//判断栈是否为空
int isEmpty(Stack *ps) {
return ps->top == 0;//ps->top == 0;的时候为空栈
}
//入栈操作
void push(Stack *ps,char ch) {
ps->mem[(ps->top)++] = ch;//先让ps.mem的指针ps.top++然后赋值
}
//出战操作
char pop(Stack *ps) {
return ps->mem[--(ps->top)];//先对ps.mem的指针--,并且返回
}
int main() {
Stack s = {{0},0};
for(char ch = 'a';ch <= 'z';ch++) {
if(!isFull(&s))
push(&s,ch);
}
while(!isEmpty(&s)) {
putchar(pop(&s));//弹出
puts(" ");
}
}
/*
z
y
x
w
v
u
t
s
r
q
p
o
n
m
l
k
j
i
h
g
f
e
d
c
b
a
*/