|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2007
Messaggi: 173
|
[C] Simulazione di uno stack
Ciao devo simulare lo stack in c con allocazione statica e dinamica, statica l'ho fatto, dinamica mi da 1 errore che non riesco a risolvere.
Codice:
#include <stdio.h> #include <stdlib.h> void pushs(int *, int **, int *); void pops(int *); main() { int *x,*scelta,*a,*temp; short i; x=(int *)malloc(sizeof(int)); scelta=(int *)malloc(sizeof(int)); temp=(int *)malloc(sizeof(int)); puts("Simulazione di una Pila (Stack)"); puts("Inserire il numero di elementi della pila (max 30)"); scanf("%d", x); a=(int *)calloc(*x,sizeof(int)); puts("Inserire gli elementi della pila"); for(i=0;i<*x;i++) { printf("%d-esimo elemento:",i); scanf("%d", a+i); } puts("\nPila:"); for(i=0;i<*x;i++) { printf("%d ", a[i]); } puts("\n\nPossibili operazioni:\n"); do { puts("\n[1] Inserire un nuovo elemento"); puts("[2] Cancella un vecchio elemento"); puts("[3] Terminare programma"); scanf("%d", scelta); if(*scelta == 1) { //Inserimento di un elemento in una pila(Stack) puts("Quale elemento vuoi inserire?"); scanf("%d", temp); pushs(temp, &a, x); puts("\nQuesto e' il nuovo array:"); for(i=0;i<*x;i++) { printf("%d ", a[i]); } } else if(*scelta == 2) { //Eliminazione di un elemento dalla pila(stack) pops(x); puts("\nQuesto e' il nuovo array:"); for(i=0;i<*x;i++) { printf("%d ", a[i]); } printf("\n"); } } while (*scelta!=3); free(a); free(scelta); free(x); free(temp); system("pause"); } void pushs(int *elem, int **a, int *n) { (*a)=(int *)realloc((*a),sizeof(int)); (*a)[n]=elem; n+=1; } void pops(int *n) { (*n)--; } La parte sul pop funziona. P.s. ma non ci sono function già fatte per le pile? |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
infatti ha ragione il compilatore: quella n non è un intero, è un puntatore a un intero :P
scrivi così: (*a)[*n] = elem; e stai attento che n sia un puntatore valido. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jan 2007
Messaggi: 173
|
![]() che errore stupido, vabbè, ora provo grazie |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:07.