#pragma once
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
typedef struct _element{
int index;
char name[8];
struct _element* next;
}ELEMENT;
typedef struct _stack{
int size;
ELEMENT* top;
}STACK;
int push(STACK* stack,ELEMENT element);
int pop(STACK* stack);
ELEMENT* _pop(STACK* stack);
int size(STACK* stack);
int empty(STACK* stack);
ELEMENT* top(STACK stack);
void clear(STACK* stack);
void show(STACK stack);
#include "stach.h"
int push(STACK* stack, ELEMENT element){
ELEMENT* elements = (ELEMENT*)malloc(sizeof(ELEMENT));
memset(elements, 0, sizeof(ELEMENT));
elements->index = element.index;
strcpy(elements->name, element.name);
elements->next = stack->top;
stack->top = elements;
stack->size++;
return 1;
}
int pop(STACK* stack){
ELEMENT* p = stack->top;
if (p != NULL)
{
stack->top = stack->top->next;
stack->size--;
free(p);
return 1;
}
return 0;
}
ELEMENT* _pop(STACK* stack){
ELEMENT* p = stack->top;
if (p != NULL)
{
stack->top = stack->top->next;
stack->size--;
return p;
}
return NULL;
}
int size(STACK stack){
return stack.size;
}
int empty(STACK* stack){
return stack->top == NULL ? 1 : 0;
}
ELEMENT* top(STACK stack){
return stack.top;
}
void clear(STACK* stack){
for (; pop(stack) != 0;);
}
void show(STACK stack){
for (ELEMENT* p = stack.top; p != NULL; p = p->next){
printf("%d %s\n",p->index,p->name);
}
}