C 语言堆栈的实例

#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");
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值