Salve a tutti, ho implementato questo stack con array (ho bisogno di farlo cosi). Solo che succede una cosa davvero strana...eppure non ho bevuto quindi non mi posso sbagliare, ma se lo richiamo dal main, va bene, se lo richiamo da un altra funzione sembra che perde il valore di inizializzazione, oppure che mi da errore di segmentazione.. dipene dai casi..a volte compilo e mi da il primo errore, ricompilo subito e mi da il secondo!!! ma è ubriaco???....vi posto lo stack di array forse c'è qualche errore...
ah su linux succede tutto questo, su windows mi va in crash direttamente!
grazie
questo è il contenuto del file.h
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
#define EMPTY -1
#define FULL (MAX - 1)
typedef struct stack{
char *s[MAX];
int top;
} stack;
#define MAX 1000
#define EMPTY -1
#define FULL (MAX - 1)
void reset(stack *stk)
{
stk -> top = -1;
}
void push(char *string, stack *stk)
{
int TOP;
stk -> top = stk -> top +1;
TOP = stk -> top;
stk -> s[TOP] = (char *)calloc(8, sizeof(char));
strcpy(stk -> s[TOP], string);
}
char *pop(stack *stk)
{
int TOP;
TOP = stk -> top;
stk -> top = stk -> top -1;
return (stk -> s[TOP]);
}
/*restituisce l'elemento al top*/
char *top(stack *stk)
{
return (stk -> s[stk -> top]);
}
/*restituisce il valore corrente di top*/
int top_val(stack *stk)
{
return (stk-> top);
}
int empty(stack *stk)
{
return (stk -> top == EMPTY);
}
int full(stack *stk)
{
/*restituisce 1 se è pieno*/
return (stk -> top == FULL);
}