|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
[c] stack con array
salve a tutti m devo sviluppare uno stack statico con array, in cui ogni elemento contiene una stringa, quindi uso un array di puntatori a char. Solo che ogni volta che tolgo un elemento sembra che contanga na stringa indefinita. Vi posto lo stack:
Codice:
#define MAX 1000
#define EMPTY -1
#define FULL (MAX - 1)
/*questo è lo stack con l'array di "stringhe"*/
typedef struct stack{
char *s[MAX];
int top;
} stack;
/*funzioni*/
void reset(stack *stk)
{
stk -> top = EMPTY;
}
void push(char *string, stack *stk)
{
int TOP;
TOP = stk -> top++;
stk -> s[TOP] = calloc(8, sizeof(char));
strcpy(stk -> s[TOP], string);
}
char *pop(stack *stk)
{
return (stk -> s[stk -> top--]);
}
char *top(stack *stk)
{
return (stk -> s[stk -> top]);
}
int empty(stack *stk)
{
/*restituisce 1 se vuoto*/
return (stk -> top == EMPTY);
}
int full(stack *stk)
{
/*restituisce 1 se è pieno*/
return (stk -> top == FULL);
}
Codice:
stack stk;
char temp[8];
reset(&stk);
push("casa", &stk);
push("mare", &stk);
/*non voglio perdere il valore tolto*/
strcpy(temp, pop(&stk));
printf("%s\n", temp);
printf("%s\n", pop(&stk));
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Io credo che l'errore sia nel push, mi sembra, ma non sono sicuro, che l'istruzione
Codice:
TOP = stk -> top++; |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
in effetti si, al primo push fai un buffer underflow...
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
edit..nulla, ora sembra funzionare...grazie..ma mi rifarò sentire
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread Ultima modifica di gepeppe : 10-11-2007 alle 13:13. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
vabbè..ci rinuncio!! di nuovo non funziona!!! forse è sbagliata come implementazione dello stack con array. Vi allego il sorgente del file dello stack, basta provatelo e vedrete che non va..ma non riesco proprio a capire il motivo....la cosa più strana, è che dopo l'istruzione reset, che inizializza top a -1, quando richiamo il push inizia da zero, poi incrementa, va a 1, e quindi inizia a salvare dal posto 1..provare per credere!!!
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:38.



















