PDA

View Full Version : [c++] probelma allocazione dinamica


ndakota
19-01-2008, 11:09
dopo aver fatto lo stack in modo "fuffo" con un array sto provando a farlo dinamico senza array con strutture ma ho dei problemi..


#include <iostream>
using namespace std;

struct Nodo
{
char dato;
struct Nodo* next;
} ;

typedef struct Nodo* nodo;

void menu();
void push(nodo nodoTesta);
void pop();
void showStack();

int main()
{
int choose;
nodo nodoTesta = NULL;

menu();

do
{
cin >> choose;

switch(choose)
{
case 1:
push(nodoTesta);
break;
case 2:
pop();
break;
case 3:
showStack();
break;
case 4:
break;
}

} while(choose != 4);

cin.get();
return 0;
}

void menu()
{
cout << "1 - aggiungi un carattere nello stack." << endl;
cout << "2 - estrai un carattere dallo stack." << endl;
cout << "3 - visualizza lo stack." << endl;
cout << "4 - esci." << endl;
cout << "? ";
}

void push(nodo nodoTesta)
{
//nodo newNodo = new nodo;

}

void pop()
{

}

void showStack()
{

}


la riga commentata è quella incriminata.. non capisco perchè non posso allocare nodo visto che nel typedef l'ho messo puntatore.. mi dice impossibile convertire da nodo* a nodo.. ci sclero aiuto.. :cry:

banryu79
19-01-2008, 11:18
ho sbagliato

cionci
19-01-2008, 11:24
Sostituisci Nodo * a nodo e dimmi se ti torna.
La new di nodo torna un nodo * non un nodo ;)

ndakota
19-01-2008, 11:33
#include <iostream>
using namespace std;

struct Nodo
{
char dato;
struct Nodo* next;
} ;

//typedef struct Nodo* nodo;

void menu();
void push(Nodo* nodoTesta);
void pop();
void showStack();

int main()
{
int choose;
Nodo* nodoTesta = NULL;

menu();

do
{
cin >> choose;

switch(choose)
{
case 1:
push(nodoTesta);
break;
case 2:
pop();
break;
case 3:
showStack();
break;
case 4:
break;
}

} while(choose != 4);

cin.get();
return 0;
}

void menu()
{
cout << "1 - aggiungi un carattere nello stack." << endl;
cout << "2 - estrai un carattere dallo stack." << endl;
cout << "3 - visualizza lo stack." << endl;
cout << "4 - esci." << endl;
cout << "? ";
}

void push(Nodo* nodoTesta)
{
Nodo* newNodo = new Nodo;

}

void pop()
{

}

void showStack()
{

}


azz è vero così funziona.. e allora come lo dovrei fare quel maledetto typedef? :p

cionci
19-01-2008, 11:35
Dovresti fare:

nodo n = new Nodo;

ndakota
19-01-2008, 11:51
giusto grazie :)