58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
|
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include "array_stack.h"
|
|||
|
|
|||
|
// <20><>ʼ<EFBFBD><CABC>ջ
|
|||
|
array_stack* init_array_stack(void)
|
|||
|
{
|
|||
|
array_stack* new_stack = (array_stack*)malloc(sizeof(array_stack));
|
|||
|
if (new_stack == NULL) {
|
|||
|
printf("<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD>init_array_stack()]\n");
|
|||
|
return NULL;
|
|||
|
}
|
|||
|
memset(new_stack, 0, sizeof(array_stack));
|
|||
|
new_stack->top = -1;
|
|||
|
return new_stack;
|
|||
|
}
|
|||
|
|
|||
|
// <20><>ջ
|
|||
|
void push_array_stack(array_stack* stack, elem_type value)
|
|||
|
{
|
|||
|
if (stack->top + 1 > MAX_S)
|
|||
|
{
|
|||
|
printf("ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD>push_array_stack()]\n");
|
|||
|
return;
|
|||
|
}
|
|||
|
stack->top++;
|
|||
|
stack->data[stack->top] = value;
|
|||
|
}
|
|||
|
|
|||
|
// <20><>ջ
|
|||
|
int pop_array_stack(array_stack* stack)
|
|||
|
{
|
|||
|
if (stack->top == -1)
|
|||
|
{
|
|||
|
printf("ջΪ<EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD>pop_array_stack()]\n");
|
|||
|
return -1;
|
|||
|
}
|
|||
|
int value = stack->data[stack->top];
|
|||
|
stack->top--;
|
|||
|
return value;
|
|||
|
}
|
|||
|
|
|||
|
// <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>ջ
|
|||
|
void print_array_stack(array_stack* stack)
|
|||
|
{
|
|||
|
if (stack->top == -1)
|
|||
|
{
|
|||
|
printf("ջΪ<EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD>print_array_stack()]\n");
|
|||
|
return;
|
|||
|
}
|
|||
|
printf("ջ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>: %d\n", stack->data[stack->top]);
|
|||
|
printf("-----\n");
|
|||
|
for (int i = stack->top; i >= 0; i--)
|
|||
|
{
|
|||
|
printf("| %d |\n", stack->data[i]);
|
|||
|
}
|
|||
|
printf("-----\n");
|
|||
|
}
|