PDA

View Full Version : Totul despre C/C++


Sagittarius
20th May 2008, 23:49
Ok, pentru programatori care au nevoie de ajutor si care dau ajutor in C sau C++. O sa incep eu .. am de facut generarea unui arbore oarecare si am facut urmatorul pseudocod. Dar nu stiu cum sa sterg nodul p. Ma poate ajuta cineva va rog???

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct nod
{
int inf;
int dim;
struct nod* tab[100];
};
struct nod * crearb(void);
//Functia pentru parcurgere in adancime//
void padinc(struct nod *);
//Functia pentru parcurgere in latime//
void plat(struct nod *);
int main()
{
struct nod *root;

//Creez arborele//

root = crearb();
printf("Parcurgere in adancime:");
padinc(root);
printf("\nParcurgere in latime:");
plat(root);
return 0;
stergere(*p);
}

struct nod * crearb()
{
int inf;
int n,i;
struct nod *p;
printf("Inf=");
scanf("%d", &inf);
p = (struct nod*)malloc( sizeof(struct nod) );
p->inf = inf;
printf("Cati fii are?");
scanf("%d", &n);
p->dim = n;
for(i=0; i<n ; i++)
p->tab[i] = crearb();
return p;
}

void stergere (nod* root)
{
nod *p;
while(root) // atâta timp cât prim este diferit de NULL
{
p=root; // p devine primul nod
// prim devine urmatorul nod
free(p); // se elibereaza nodul curent
}
}
void padinc(struct nod *p)
{
int i;
if(p != NULL)
{
printf("%d", p->inf);
for(i=0; i<p->dim; i++)
padinc(p->tab[i]);
}
}

void plat(struct nod *p)
{
struct nod *queue[100];
struct nod *t; int front = 0, back = 0;
int i;
queue[front++] = p;
while( ! (front==back))
{
t = queue[back]; back++;
printf("%d", t->inf);
for(i=0;i<t->dim;i++)
queue[front++]=t->tab[i];
}
}