C语言数据结构顺序栈的基本操作之出栈入栈打印置空栈取栈顶求深度等

#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR -1
#define STACKINITSIZE 10
#define  STACKCREATSIZE 2

typedef int ElemType;
//顺序栈结构 
typedef struct {
	ElemType *elem;
	int top;
	int stacksize;
} SeqStack;
//初始化 
int InitSTack(SeqStack *s) {
	s->elem=(ElemType*)malloc(sizeof(ElemType)*STACKCREATSIZE);
	s->stacksize=STACKCREATSIZE ;
	s->top=0;
	return OK;
}
//出栈 
int Push(SeqStack *s,ElemType e1) {
	ElemType *newbase,newspacesize;
	if(s->top>=s->stacksize-1) {
		newspacesize=(s->stacksize+STACKINITSIZE)*sizeof(ElemType);
		newbase=(ElemType*)realloc(s->elem,newspacesize);
		if(!(newbase))
			return ERROR;
		s->elem=newbase;
		s->stacksize+=STACKINITSIZE;
	}
	s->elem[s->top]=e1;
	s->top++;
	return OK;
}

//入栈 
int Pop(SeqStack *s,ElemType *e) {
	if(s->top<=0)
		return ERROR;
	*e=s->elem[s->top-1];
	s->top--;
	return OK;
}

//取栈顶 
int GetTop(SeqStack *s,ElemType *e) {
	if(s->top<=0)
		return ERROR;
	*e=s->elem[s->top-1];
	return OK;
}
//判空 
int StackEmpty(SeqStack *s) {
	if(s->top<=0)
		return 1;
	else
		return 0;
}
//求深度 
int StackDepth(SeqStack *s) {
	return s->top;
}
//置空栈 
int ClearStack(SeqStack *s) {
	s->top=0;
	return OK;
}

//打印栈 
int PrintfStack(SeqStack *s) {
	int i=0;
	if(s->top<=0)
		return 0;
	while(s->top>=0) {
		printf("%d,",s->elem[s->top]);
		s->top--;
		i++;
	}
	s->top=i;
	return 0;
}


int main(void) {
	SeqStack s;
	ElemType e,e1;
	scanf("%d",&e1);
	InitSTack(&s);
	Push(&s,e1);
//	Pop(&s,&e);
//	StackDepth(&s);
//	ClearStack(&s);
//	StackEmpty(&s);
//	GetTop(&s,&e);
	PrintfStack(&s);
	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扎心小指针0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值