一、介绍
栈是一种存储方式,先入后出
二、实现
#include<stdio.h>
#define STACK_SIZE 10
unsigned char stack_mem[STACK_SIZE] = {0};
int stack_len = 0;
//压栈操作
int push_data(unsigned char *stack, unsigned char data)
{
if(stack_len >= STACK_SIZE)
{
return 0;
}
else
{
//压栈操作
stack[stack_len] = data;
stack_len++;
}
return 1;
}
//出栈操作
int pop_data(unsigned char *stack, unsigned char *data)
{
if(stack_len == 0)//栈为空
{
return 0;
}
else
{
*data = stack[(stack_len - 1)];
stack[(stack_len - 1)] = 0;//清零
stack_len--;//修改数据长度
}
return 1;
}
//打印栈内存
void print_stack(unsigned char *stack)
{
int i;
printf("栈数据长度: %d\n", stack_len);
printf("栈内存数据: \n");
printf("栈底:");
for(i = 0; i < STACK_SIZE; i++)
printf("%d ", stack[i]);
printf("栈顶");
printf("\n\n");
}
void stack_test()
{
unsigned char tmp;
push_data(stack_mem, 1);
print_stack(stack_mem);
push_data(stack_mem, 2);
push_data(stack_mem, 3);
print_stack(stack_mem);
pop_data(stack_mem, &tmp);
print_stack(stack_mem);
printf("出栈数据:%d\n",tmp);
pop_data(stack_mem, &tmp);
printf("出栈数据:%d\n",tmp);
print_stack(stack_mem);
pop_data(stack_mem, &tmp);
printf("出栈数据:%d\n",tmp);
print_stack(stack_mem);
}
int main()
{
stack_test()
while(1);
return 0;
}