Witam,
Piszę słownik tel. kom. W BST i mam problem z dodaniem elementu otóż przy dodawaniu elementu zastępuje/ gubi słowa a właściwie to nie wiem co się dzieje. :( Gdybym mógł korzystać z biblioteki string to bym dał radę a tak to już limit pomysłów mi się wyczerpał. :( Wiem że rzutowanie mogło być inaczej itd. ale gdzie jest ten błąd :P. Pozdrawiam

/*MZ*/
#include<stdlib.h>
#include<stdio.h>
#define null 0
//#include<conio.h>

const int dlugosc=100;

//Struktura drzewa przechowuje: litery-slowa(w int) identyfikator-zamienione slowa na T9, wskazniki na poprzednika
struct DrzewoBST
{
 char litera[dlugosc];
 int identyfikator_T9[dlugosc];
 int identyfikator_sort[dlugosc];
 };
 struct Wezel
{
  DrzewoBST dane;      
  Wezel *lewy;
 Wezel *prawy;
        
};
// DrzewoBST *parent=null;
 Wezel *root=null;
 //DrzewoBST *klucz;

//Zamienia znaki char na kod z ascii do int
int rzutowanie(int i,const char znaki[])
{
 char tymczasowy[1];
 tymczasowy[0]=znaki[i];
  return static_cast<int>(tymczasowy[0]);
}

//Przypisuje kazdej literze odpowiedni kod i zapisuje go do tablicy
int kody_t9(int *pom, const char literki[])
{
 if(literki[*pom]=='a' || literki[*pom]=='b' || literki[*pom]=='c') return 2;
 else if(literki[*pom]=='d' || literki[*pom]=='e' || literki[*pom]=='f') return 3;
 else if(literki[*pom]=='g' || literki[*pom]=='h' || literki[*pom]=='i') return 4;
 else if(literki[*pom]=='j' || literki[*pom]=='k' || literki[*pom]=='l') return 5;
 else if(literki[*pom]=='m' || literki[*pom]=='n' || literki[*pom]=='o') return 6;
 else if(literki[*pom]=='p' || literki[*pom]=='q' || literki[*pom]=='r' || literki[*pom]=='s') return 7;
 else if(literki[*pom]=='t' || literki[*pom]=='u' || literki[*pom]=='v') return 8;
 else if(literki[*pom]=='w' || literki[*pom]=='x' || literki[*pom]=='y' || literki[*pom]=='z') return 9;
}


void Dodaj(Wezel **tree, const char literki[])
{
 Wezel *nowy=null, *y=null;
 Wezel  *curr=*tree;

 int i=0;    //zmienna pomocnicza pozwalajaca zapelnic tablice
 int wartosc[dlugosc];  //Tablica pomocnicza przechowywane sa w niej kody slowa T9
 int sort_id[dlugosc];
 int pom=0;   //zmienna pomocnicza zapamietuje dlugosc tablicy
for(i=null;i<dlugosc;i++) wartosc[i]=null;
 //Zamiana na kodowanie T9
 i=0;
  while(literki!=null)
  {
   wartosc[pom]=kody_t9(&pom,literki);
   i++;
   pom++;
  }
  
  //Zamienia litery na kod ascii co pozwala na optymalne dodanie slow do drzewa binarnego
  for(i=null;i<dlugosc;i++) sort_id[i]=null;
  i=0;
  while(literki[i]!=null)
 {
  sort_id[i]=rzutowanie(i,literki);
 i++;
 }
 i=0;

 //Utworzenie nowego rekordu dla drzewa
   nowy=new (Wezel);
   i=0;
   while(literki[i]!=null)
   {
   nowy->dane.litera[i]=literki[i];
   nowy->dane.identyfikator_T9[i]=wartosc[i];
   nowy->dane.identyfikator_sort[i]=sort_id[i];
   i++;
   }
   
   nowy->lewy=nowy->prawy=null;

   i=0;
   //Wyszukiwanie odpowiedniej pozycji dla nowych danych
   while(curr != null)
   {
    y=curr;
    if((sort_id[i] > y->dane.identyfikator_sort[i])) curr=curr->prawy;
    else if((sort_id[i] <= y->dane.identyfikator_sort[i])) curr=curr->lewy;
    printf("%d",y->dane.identyfikator_sort[i]);
    i++;
   }
   
   i=i-1;
   
   if(root==null) *tree = nowy;
   else  if ((nowy->dane.identyfikator_sort > y->dane.identyfikator_sort)==false) y->prawy=nowy;
  else  if ((nowy->dane.identyfikator_sort <= y->dane.identyfikator_sort)==false) y->lewy=nowy;
 }



int zwroc_liczbe(int pom, const char liczby[])
{
 char tymczasowy[1];
 tymczasowy[0]=liczby[pom];
 return atoi(tymczasowy);
}



void pinorder(Wezel *tree)
{
  if(tree!=null)
  {

     pinorder(tree->lewy);
     printf("%s ",tree->dane.litera);
     pinorder(tree->prawy);

 }
}



int main(void)
{
 char litery[dlugosc]; //Tablica zawierajace slowa
 int n; //okresla ilosc slow w slowniku
 int m;  //Liczba zapytan
 int i; //zmienna pomocnicza
 int pom=0;;
 char tablica[dlugosc];
 int liczby[dlugosc];          //tablica char zamieniona na tablice int
 
 scanf("%i", &n);
 while(n--)
 {
  for(i=null;i<dlugosc;i++) {litery[i]=null;}   //Zerowanie tablicy z slowami
  scanf("%s",litery);
  Dodaj(&root,litery);
  pinorder(root);
 }

 system("Pause");
}