61 lines
1.1 KiB
C
61 lines
1.1 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#define STACK_SIZE 10
|
|
|
|
struct stack{
|
|
float *values;
|
|
int size;
|
|
int capacity;
|
|
};
|
|
|
|
struct stack* create_stack (int capacity) {
|
|
struct stack* s = malloc (sizeof(struct stack));
|
|
if (s==NULL) {
|
|
printf("Error!\n");
|
|
exit(1);
|
|
}
|
|
s->values = malloc(capacity * sizeof(float));
|
|
if (s->values==NULL) {
|
|
printf("Error!\n");
|
|
free(s);
|
|
exit(1);
|
|
}
|
|
s->size = 0;
|
|
s->capacity = capacity;
|
|
return s;
|
|
}
|
|
|
|
void push_stack (struct stack* s, float value) {
|
|
if (s->size >= s->capacity) {
|
|
printf("Stack perepolnen!\n");
|
|
exit(1);
|
|
}
|
|
s->values[s->size] = value;
|
|
s->size++;
|
|
}
|
|
|
|
float pop_stack(struct stack* s) {
|
|
if (s->size <= 0) {
|
|
printf("Erroe!\n");
|
|
exit(1);
|
|
}
|
|
s->size--;
|
|
return s->values[s->size];
|
|
}
|
|
|
|
void print_stack(struct stack* stack) {
|
|
for (int i = 0; i<stack->size; i++) {
|
|
printf("%.2f", stack->values[i]);
|
|
}
|
|
printf("\n");
|
|
}
|
|
|
|
void destroy_stack (struct stack* s) {
|
|
free(s->values);
|
|
free(s);
|
|
}
|
|
|
|
int main() {
|
|
return 0;
|
|
} |