#include<stdio.h>
#include<string>
#define MAXSIZE 10 //定义数组元素的个数
int i=1,choose;//定义记录输入的个数 和 选择的选项
int *sptr,*full,*empty;//定义指向栈的指针sptr,以及判断是否为空和满的指针
int stack[MAXSIZE]; //定义数组的大小
//声明函数
void push(void);
void pop(void);
void printInfo(void);
//主函数开始
int main(){
sptr=stack; //指针指向stack[0]的位置
empty=stack; //指针指向stack[0]的位置
full=stack+MAXSIZE-1;//指针指向stack[9]的位置
do{
printf("\n\t================堆栈的实例开始===============\n");
printf("\n\t 1.压入栈中");
printf("\n\t 2.从栈中弹出");
printf("\n\t 3.打印元素");
printf("\n\t 4.退出程序\n");
printf("\n\t请选择 [1-4] :");
scanf("%d",&choose);
switch(choose){
case 1:
push();
break;
case 2:
pop();
break;
case 3:
printInfo();
break;
case 4:
exit(0);
default:
printf("\n\n\t==================输入错误!=================");
break;
}
}while(1);
return 0;
}
//压入栈
void push(void){
sptr++;//加1
if(sptr==full){//栈已经满了
printf("\n\n ........栈已经满了.......");
sptr--;
}else{
printf("请输入第 %d 个数值 : ",i++);
scanf("%d",sptr);
}
}
//弹出栈
void pop(void){
if(sptr!=empty){//如果不为空就弹出
sptr--;
i--;
}else{
printf("\n\n\t\t ........栈是空的不能弹出!.......");
i=1;
}
}
void printInfo(void){
int * temp;
temp=sptr;
printf("\n\n\t栈中的数据是:");
do{
if(temp!=empty){//只要没有到头就找
printf(" %3d ",*temp);
temp--;
}else{
break;
}
}while(1);
printf("\n\n\t================堆栈的实例结束===============\n");
}
C 语言堆栈的实例
最新推荐文章于 2022-10-11 15:54:26 发布