C语言实现判空栈&顺序栈的初始化&进栈&出栈&取栈顶元素

栈是一张特殊的线性表,既可采用顺序存储结构存储,也可以采用链式存储结构存储。

下面介绍采用顺序结构存储的栈的相关基本操作,用一个int top 来作为栈顶的指针,指明当前栈顶的位置,空栈时s -> top = -1,入栈时s ->top ++;出栈时s -> top --;将data和top封装在一个结构中。代码如下:

#include <stdio.h>
#define MAXSIZE 100
#include <malloc.h>
typedef int datatype;
typedef struct {
	int data[MAXSIZE];
	int top;
}SeqStack; 
//初始化栈 
SeqStack *Init_SeqStack(){
	SeqStack *S;
	S = (SeqStack*)malloc(sizeof(SeqStack));
	S -> top = -1;
	return S;
}
//判空栈 
int Empty_SeqStack(SeqStack *S){
if(S -> top == -1)
return 1;
else 
return 0;
}
//入栈 
int push_SeqStack(SeqStack *S,int x){
if(S -> top == MAXSIZE - 1)
return 0;
else{
	S ->top ++;
	S ->data[S ->top] = x;
	return 1;
}
}
//出栈 
int pop_SeqStack(SeqStack *S,int *x){
if(Empty_SeqStack(S))
return 0;
else{
	//把栈顶元素存入变量x即y 
	*x = S -> data[S ->top];
	S -> top --;
	return 1;
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值