PDA

Visualizza la versione completa : [C]Problema stack


Luc@s
18-11-2003, 16:01
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"

int main(int argc, char * argv[])
{
Stack * s = Create();
int i = 0;
while(i != 10)
{
push(s, i);
i++;
}
i = 0;
int x[10];
while(i != 10)
{
pop(s, &x[i]);
i++;
}
i = 0;
for(i = 0; i < 10; i++)
printf("Pop => %d \n", x[i]);
char sc;
scanf("%s", &sc);
return 0;
}

#include <malloc.h>

typedef struct
{
int vet[11];
int sp;
}Stack;

Stack * Create()
{
Stack * v = malloc(sizeof(Stack));
v->sp = 0;
return v;
}

void push(Stack * p, int value)
{
p->vet[p->sp++] = value;
}

void pop(Stack * p, int * value)
{
if(p->sp == 0)
return;
value = (int *) p->vet[p->sp--];
}


Mi stampa numeri a caso:(
Why????

cristiano_longo
18-11-2003, 16:21
Nel metodo pop prova a sostituire

value = (int *) p->vet[p->sp--];

con

*value = (int *) p->vet[p->sp--];

Se funziona, ti spiego il perche'.

cristiano_longo
18-11-2003, 16:22
Scusa, rettifico

*value = p->vet[p->sp--];

Loading