栈的基本操作(C语言)

栈的基本操作(C语言)

#include <stdio.h>
#include <stdlib.h>


//栈的结构体
typedef struct SqStack{
	int  *base;
	int  *top;
	int stacksize;
} SqStack;

//初始化栈
int InitStack(SqStack *s){
	s->base=(int *)malloc(10*sizeof(int));
	if(!s->base){
		exit(-1);
	}
	s->top=s->base;
	s->stacksize=10;
	return 1;
}
//获取栈的数据
int GetTop(SqStack *s,int *e){
	if(s->top==s->base){
		return -1;
	}
	*e=*(s->top-1);
	return 1;
}
//入栈
int Push(SqStack *s,int e){
	if(s->top-s->base==s->stacksize){
		s->base=(int *)realloc(s->base,(s->stacksize+10)*sizeof(int));
		if(!s->base){
			exit(-1);
		}
		s->base=&s->stacksize;
		s->top=&s->stacksize;
		s->stacksize+=10;
	}
	*s->top++=e;
	return 1;

}
//出栈
int Pop(SqStack *s,int *e){
	if(s->top==s->base){
		return -1;
	}
	--s->top;
	*e=*s->top;
	return 1;
}

//获取栈内数据长度
int StackLength(SqStack *s){
	return s->top-s->base;

}


int main(){
	int i,v;
	//定义栈并初始化
	SqStack s;
	InitStack(&s);
	//传入数据
	printf("请输入初始入栈的个数 :");
	scanf("%d",&i);
	while(i--){
		printf("入栈数据");
		scanf("%d",&v);
		if(!Push(&s,v)){
		printf("入栈失败 !");	
		}
	}
	//输出属性
	printf("栈的长度为 :%d\n",StackLength(&s));
	printf("栈的容量为 :%d\n",s.stacksize);

	//出栈功能
	while(StackLength(&s)){
		if(Pop(&s,&v)){
		printf("出栈数据:%d\n",v);
		}else{
		printf("出栈失败\n");
		}
	}
	system("pause");

	return 0;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值