|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
[c] algoritmo di visita postorder
Codice:
void carica_stack(albero alb,stack *head)
{ stack el;
stack aux=*head;
if(alb!=NULL)
{printf("%d ",alb->dato);
if(alb->left!=NULL)
carica_stack(alb->left,&aux);
if(alb->right!=NULL)
carica_stack(alb->right,&aux);
el = (stack)malloc(sizeof(struct l_nodo));
if(alb->segno!=NULL)
strcpy(el->info,alb->segno);
else
itoa(alb->dato,el->info,10);
el->next=aux;
aux=el;
aux=aux->next;
printf("%s\n",el->info);
}
}
In pratica dovrebbe visitare l'albero in postorder ed inserire all'interno di uno stack i valori dell'albero..... Cos'è che potrebbe dare l'errore?!L'albero l'ho creato con un'altra funzione ma dovrebbe essere corretto....da errore dopo 3 o 4 chiamate ricorsive... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
visita solo in ricorsione senza mettere sullo stack che non serve a nulla.
in speudocodice: Codice:
void postorder (nodo root)
{
if (root == null) return;
postorder (root.left());
postorder (root.right());
print (root.valore);
}
quindi dovrebbe essere così a muzzo
void carica_stack(albero alb){
if(alb==NULL) return;
carica_stack(alb->left);
carica_stack(alb->right);
printf("%s\n",el->info);
}
spero che non abbia fatto su qualche troiata adesso ![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso Ultima modifica di Fenomeno85 : 04-07-2006 alle 19:28. |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
la mia versione:
Codice:
typedef struct _TREE {
int Field;
struct _TREE *Left;
struct _TREE *Right;
} TREE, *PTREE;
void VisitaPostOrder(PTREE Tree) {
if (!Tree) {
return;
}
VisitaPostOrder(Tree->Left);
VisitaPostOrder(Tree->Right);
printf("%d\n", Tree->Field);
}
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
lo stack mi serviva per la parte successiva del programma..cmq alla fine ho risolto facendo...come avete fatto voi + o meno....l'esame ce l'ho dopodomani..ma sn tranquillo...invece domani...analisi!!ma vado li già rassegnato....
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:09.











spero che non abbia fatto su qualche troiata adesso








