Skip to content

Instantly share code, notes, and snippets.

@panta
Last active December 9, 2021 17:42
Show Gist options
  • Save panta/ffd9cb841d0c8dbaf83135f3404cff37 to your computer and use it in GitHub Desktop.
Save panta/ffd9cb841d0c8dbaf83135f3404cff37 to your computer and use it in GitHub Desktop.
UNIPD FdI 2021-2022 - Esempio di stack in C (con variabili globali)
#include <stdio.h>
#include <stdint.h>
#define STACK_SIZE 1000
// ATTENZIONE!
// qui utilizziamo delle variabili globali a titolo di esempio
// ma dovremmo invece utilizzare una struttura e passare
// il puntatore alla struttura a tutte le funzioni che operano
// con lo stack
int elements[STACK_SIZE];
int sp;
void stack_init(void) {
sp = 0;
}
void stack_push(int val) {
elements[sp] = val;
sp++;
}
int stack_pop(void) {
int r = elements[--sp];
return r;
}
void stack_print(void) {
for (int i = sp - 1; i >= 0; i--) {
printf("stack[%d]: %d\n", i, elements[i]);
}
}
int main() {
stack_init();
stack_push(88);
stack_push(15);
stack_push(42);
stack_push(111);
stack_push(333);
stack_print();
int r = stack_pop();
printf("popped %d\n", r);
r = stack_pop();
printf("popped %d\n", r);
printf("\n");
stack_print();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment