数组加循环>>栈
栈先入后出(FILO)例子弹 先压进的后打出
栈里面的数据可以是任意数据类型
入栈 向里面放数据
出栈 将数据从栈里取出
栈只有入栈和出栈的操作
并且只能操作最顶层的数据
/* 思路: @创建一个容器 即数组 @放数据: 栈指针指向下一个位置 此时指向的数据为空 top++ @取数据: 将指针指向之前放入的数据 即--top @检测数据是否为空:为空则结束取数据
简洁版:
//数据结构:栈
#include<stdio.h>
char stack[512];//存放栈的数据
int top = 0; //指向栈顶的指针
void push(char c);
char pop(void);
int is_empty(void);
int main(void) {
push('a');
push('b');
while (!is_empty()) {
putchar(pop());
}
return 0;
}
//入栈操作
void push(char c) {
stack[top++] = c;
}
//出栈操作
int pop(void) {
return stack[--top];
}
//检测栈是否为空
int is_empty(void) {
return top == 0;
}
部分注释版本:
//数据结构:栈
#include<stdio.h>
char stack[512];//存放栈的数据
int top = 0; //指向栈顶的指针
void push(char c);
char pop(void);
int is_empty(void);
int main(void) {
push('a');
push('b');
while (!is_empty()) { //一直检测栈是否为空 为空则退出 is_empty() == 0与!is_empty()作用相同
putchar(pop());
}
return 0;
}
//入栈操作
void push(char c) {
//存放数据后指向下一个位置 top++是先使用top 使用完++
stack[top++] = c;
}
//出栈操作
char pop(void) {
//取出数据指向前一个数据 --top是先减一在使用数据
return stack[--top];
}
//检测栈是否为空
int is_empty(void) {
//top为零返回真 不为零则为假 真即为空,假即为不空
return top == 0;
}
全注释版本:方便复习
//数据结构:栈
#include<stdio.h>
char stack[512];//存放栈的数据
int top = 0; //指向栈顶的指针
void push(char c);
int pop(void);
int is_empty(void);
int main(void) {
push('a');//放字符a
push('b');//放字符b
while (!is_empty()) { //一直检测栈是否为空 为空则退出is_empty() == 0与!is_empty()作用相同
putchar(pop());//将栈中的数据打印
}
return 0;
}
//入栈操作
void push(char c) {
//存放数据后指向下一个位置 top++是先使用top 使用完++
stack[top++] = c;
}
//出栈操作
char pop(void) {
//取出数据指向前一个数据 --top是先减一在使用数据
return stack[--top];
}
//检测栈是否为空
int is_empty(void) {
/* if (top == 0) {
return 1; //返回为真
}
if (top == 0) {
return 0; //返回为假
}
*/
//top为零返回真 不为零则为假 真即为空,假即为不空
return top == 0;
}









