/*
顺序栈实现
*/
#include <stdio.h>
#define SIZE 50
static int data[SIZE]; //声明数组data,用于存储栈中数组
static int index; //声明变量index,用于表示栈中元素个数
//初始化栈
void init(){
index = 0;
}
//清理栈
void deinit(){
index = 0;
}
//判栈满
int full(){
return index == SIZE;
}
//判栈空
int empty(){
return index == 0;
}
//入栈
void push(int num){
data[index] = num;
index++;
}
//出栈
int pop(){
index--;
return data[index];
}
//取栈顶数据
int top(){
return data[index-1];
}
//获取栈中元素个数
int size(){
return index;
}
int main(){
init(); //初始化栈
//入栈
int num = 0, loop = 0;
for(loop = 0; loop < 10; loop++){
printf("请输入一个整数:");
//差错处理
while(!scanf("%d",&num)){
scanf("%*[^\n]"); //清除缓冲区不合法的换行符
scanf("%*c"); //清楚缓冲区不合法的字符
}
scanf("%*[^\n]"); //清除缓冲区不合法的换行符
scanf("%*c"); //清楚缓冲区不合法的字符
//判栈满
if(full()){
printf("栈满!\n");
return -1;
}
push(num);
}
//出栈
while(!empty()){
printf("%d ",pop());
}
printf("\n");
deinit(); //清理栈
return 0;
顺序栈实现
*/
#include <stdio.h>
#define SIZE 50
static int data[SIZE]; //声明数组data,用于存储栈中数组
static int index; //声明变量index,用于表示栈中元素个数
//初始化栈
void init(){
index = 0;
}
//清理栈
void deinit(){
index = 0;
}
//判栈满
int full(){
return index == SIZE;
}
//判栈空
int empty(){
return index == 0;
}
//入栈
void push(int num){
data[index] = num;
index++;
}
//出栈
int pop(){
index--;
return data[index];
}
//取栈顶数据
int top(){
return data[index-1];
}
//获取栈中元素个数
int size(){
return index;
}
int main(){
init(); //初始化栈
//入栈
int num = 0, loop = 0;
for(loop = 0; loop < 10; loop++){
printf("请输入一个整数:");
//差错处理
while(!scanf("%d",&num)){
scanf("%*[^\n]"); //清除缓冲区不合法的换行符
scanf("%*c"); //清楚缓冲区不合法的字符
}
scanf("%*[^\n]"); //清除缓冲区不合法的换行符
scanf("%*c"); //清楚缓冲区不合法的字符
//判栈满
if(full()){
printf("栈满!\n");
return -1;
}
push(num);
}
//出栈
while(!empty()){
printf("%d ",pop());
}
printf("\n");
deinit(); //清理栈
return 0;
}
运行结果如下: