|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
[C++] problema stack, funzione push
Sto lavorando a uno stack ed ho un problema: ho implementato la funzione push per inserire elementi nello stack ma succede una cosa strana: la chiamo n volte per aggiungere n elementi, ma mi funziona solo la prima! vi copio il codice di seguito..
questa è la definizione dello stack in stack.h Codice:
struct stack{
int dim;
int elementi[MAX];
};
Codice:
retval push (int n, stack & s){
retval res;
if (isfull(s))
res=FAIL;
else {
s.elementi[s.dim++]=n;
res=OK;
}
return res;
}
Codice:
int main(){
stack s;
inizializza(s);
push(4, s);
push(5, s);
push(3,s);
stampa(s);
cout << s.dim << endl;
Codice:
4 1 // la dimensione dello stack |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Posta il codice delle funzioni inizializza, isfull e stampa.
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
Codice:
void inizializza(stack & s){
s.dim=0;
}
Codice:
bool isfull(stack & s){
if(s.dim==MAX)
return true;
}
Codice:
void stampa(stack & s){
for(int i=0; i<s.dim; i++)
cout << s.elementi[i] << endl;
}
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
La funzione isfull deve ritornarte false se lo stack non è pieno:
Cosi funziona: Codice:
#define MAX 100
#define FAIL 0
#define OK 1
typedef int retval;
struct stack
{
int dim;
int elementi[MAX];
};
void inizializza(stack &s)
{
s.dim = 0;
}
bool isfull(stack &s)
{
if( s.dim == MAX )
return true;
return false;
}
void stampa(stack &s)
{
for(int i = 0; i < s.dim; i++)
cout << s.elementi[i] << endl;
}
retval push (int n, stack &s)
{
retval res;
if (isfull(s))
res = FAIL;
else
{
s.elementi[s.dim++] = n;
res = OK;
}
return res;
}
int main()
{
stack s;
inizializza(s);
push(4, s);
push(5, s);
push(3,s);
stampa(s);
cout << "Dimensione: " << s.dim << endl;
}
Codice:
4 5 3 Dimensione: 3 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:41.



















