C语言-顺序栈实现

栈的定义

栈:是限定只在表尾进行插入或删除的线性表。所以栈也成为后进先出的线性表
表头为栈底,表尾为栈顶,不含元素的空表为空栈

顺序栈的实现

顺序栈是指利用顺序存储结构实现的栈,即 利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时利用数组下标top指示栈顶元素在顺序栈中的位置。因为C语言中数组下标从0开始,这里以top = -1表示空栈。
顺序栈的数据结构:

#define maxStackNum 100
typedef struct{
	int* data;		//栈元素指针
	int top;		//栈顶下标
}MyStack;
  1. 初始化
MyStack* myStackCreate(){
	MyStack* stack = (MyStack*)malloc(sizeof(MyStack));

	stack->data = (int*)malloc(sizeof(int) * maxStackNum );	//为顺序栈分为最大容量为maxStackNum的数组空间
	stack->top = -1;	//栈顶下表
}
  1. 入栈
void myStackPush(MyStack* obj, int value){
	if(obj->top == maxStackNum - 1)	//栈满
		return;
	obj->data[++obj->top];		//栈顶下标加1,元素压入栈顶(top始终为栈顶下标)
}
  1. 出栈
void myStackPop(MyStack* obj){
	if(obj->top == -1)	//栈空
		return;
	obj->top--;
}
  1. 取栈顶元素
int myStackTop(MyStack* obj){
	if(obj->top != -1)	//栈非空
		return obj->data[obj->top];
}
  1. 判断栈是否为空
bool myStackEmpty(MyStack* obj){
	if(obj->top == -1)
		return true;
	else
		return false;
}
  1. 销毁栈
void myStackFree(MyStack* obj){
	free(obj->data);
	free(obj);
}

你可能感兴趣的:(C,c语言,数据结构,栈)