栈 stack C语言(简单实现)

栈,是数据结构中重要的一种,在这儿简单的实现栈的定义,使用。栈最重要的两个操作是压栈和出栈。就像堆东西一样,越堆越高,但是取东西的时候,必须从最上面的取,否侧栈会坍塌。

知道简单的含义后,使用C语言实现栈。有什么错误的地方可以指正批评。

#include<stdio.h>
#include<stdlib.h>
// 定义栈的最大容量
#define MAX_SIZE_ST 512
//定义栈的数据类型
typedef int Data_type;
// 定义一个stack 栈
typedef struct {
	int maxsize;
	int top;
	Data_type stack[MAX_SIZE_ST];
}stack;
//定义栈的指针
typedef stack* stack_p;
//创造出一个栈
stack_p create_stack(){
	stack_p st=(stack*)malloc(sizeof(stack));
	st->top = -1;
	return st;

}
//在栈中压入一个数据
void stack_push(stack_p st, Data_type data){
	st->top++;
	st->stack[st->top] = data;
	

}
// 栈出栈一个数据
Data_type stack_pop(stack_p st){
	Data_type var;
	var = st->stack[st->top];
	st->stack[st->top] = NULL;
	st->top--;
	return var;

}
// 判断栈是否为空
int stack_isempty(stack_p st){
	if (st->top == -1)
		return 1;
	else
		return 0;
}
// 判断栈是否为满栈
int  stack_isfull(stack_p st){
	if (st->top == MAX_SIZE_ST)
		return 1;
	else
		return 0;
}
// 打印出栈的所有数据
print_stack(stack_p st){
	printf("[");
	for (int i = 0; i <st->top; i++){
		printf("%d\t", st->stack[i]);
	}
	printf("]");
}



void main(void){
	// 定义一个栈
	stack_p st;
	st = create_stack();
	printf("\nstack is empty? %d\n", stack_isempty(st));
	//压栈
	stack_push(st, 10);
	stack_push(st, 10);
	stack_push(st, 10);
	stack_push(st, 10);
	print_stack(st);
	// 出栈
	printf("\n%d\n",  stack_pop(st));
	print_stack(st);
	printf("\nstack is full? %d\n", stack_isfull(st));
	free(st);
	while (1);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值