Revision: 38667
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 6, 2011 04:30 by sam085
Initial Code
#include <stdlib.h>
#define ARRAYSIZE 1000000
struct element
{
int label;
int used;
};
typedef struct bt
{
struct element elements[ARRAYSIZE];
} *btree;
typedef int node;
btree init(int x)
{
btree myBTree;
int i;
myBTree = (btree)malloc(sizeof(struct bt));
for(i = 1; i < ARRAYSIZE; i++){
if(i == 1)
{
myBTree->elements[i].label = x;
myBTree->elements[i].used = 1;
}
else
{
myBTree->elements[i].used = 0;
}
}
return myBTree;
}
node root(btree T)
{
return 1;
}
node parrent(node n, btree T)
{
if(n == 1)
{
printf("Roditelj korjenskog cvora ne postoji\n");
return -1;
}
if(T->elements[n].used == 0)
{
printf("Ne postoji\n");
exit(1);
}
return (n/2);
}
node leftChild(node n, btree T)
{
node child;
child = n * 2;
if (child > ARRAYSIZE-1)
{
printf("\noverflow\n");
return -1;
//exit(1);
}
if(T->elements[child].used == 0)
{
return -1;
}
else
{
return child;
}
}
node rightChild(node n, btree T)
{
node child;
child = (n * 2) + 1;
if (child > ARRAYSIZE - 1)
{
printf("\noverflow\n");
return -1;
//exit(1);
}
if(T->elements[child].used == 0)
{
return -1;
}
else
{
return child;
}
}
int label(node n, btree T)
{
if(T->elements[n].used == 0)
{
printf("ne postoji\n");
return -1;
}
else
{
return T->elements[n].label;
}
}
void changeLabel(int x, node n, btree T)
{
if(T->elements[n].used == 0)
{
printf("ne postoji\n");
return;
}
else
{
T->elements[n].label = x;
}
}
void createLeft(int x, node n, btree T)
{
node child;
child = n * 2;
if (child > ARRAYSIZE - 1)
{
printf("\noverflow\n");
return;
}
if(T->elements[child].used == 1){
printf("lijevi vec postoji\n");
return;
}
else
{
T->elements[child].used = 1;
T->elements[child].label = x;
}
}
void createRight(int x, node n, btree T)
{
node child;
child = (n * 2) + 1;
if (child > ARRAYSIZE - 1)
{
printf("\noverflow\n");
return;
}
if(T->elements[child].used == 1)
{
printf("desno vec postoji\n");
return;
}
else
{
T->elements[child].used = 1;
T->elements[child].label = x;
}
}
void deleteN(node n, btree T){
if(n == -1)
return;
deleteN(leftChild(n, T), T);
T->elements[n].used=0;
deleteN(rightChild(n, T), T);
}
void deleteNode(node n, btree T ){
if(parrent(n, T) == -1){
printf("Korjen se nemoze obrisat\n");
return;
}
deleteN(n,T);
}
Initial URL
Initial Description
Initial Title
binarno stablo - polje
Initial Tags
Initial Language
C++