栈,是数据结构中重要的一种,在这儿简单的实现栈的定义,使用。栈最重要的两个操作是压栈和出栈。就像堆东西一样,越堆越高,但是取东西的时候,必须从最上面的取,否侧栈会坍塌。
知道简单的含义后,使用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);
}