folder Tahribat.com Forumları
linefolder C - C++
linefolder C Dilinde Binary Tree İçerisine String Ekleme



C Dilinde Binary Tree İçerisine String Ekleme

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    akustikelektrik
    akustikelektrik's avatar
    Kayıt Tarihi: 09/Şubat/2013
    Erkek

    txt dosyasından fscanf ile tuttuğum kelimeleri tek tek alfabetik olarak karşılaştırıp node lara yerleştimek istiyorum. Daha sonra inorder sıra ile,en soldan başlayarak yazdıracağım.Benim kodun neresinde problem var bakarmısınız? Aynı zamanda aynı olan kelimelerin kaç tane olduğunu saydıracağım.

    #include "stdio.h"

    #include "stdlib.h"

    #include "string.h"

    struct treeNode {

      char data[20];

           int count;

           struct treeNode *leftPtr, *rightPtr;

     };

     

    int number;

     

    typedef struct treeNode TreeNode;

    typedef TreeNode *TreeNodePtr;

     

    void insertNode (TreeNodePtr *treePtr,char word[]);

    void alphabetic(TreeNodePtr treePtr);

    int main(){

     

    char first[20];

    FILE *fp1;

    TreeNodePtr rootPtr=NULL;

    int c;

    fp1=fopen("output.txt","r");

    do{

    c=fscanf(fp1,"%s",first);

    insertNode(&rootPtr,first);

     

    printf("%s\n",rootPtr->data);

     

     

    }while(c!=EOF);

    fclose(fp1);

    alphabetic(rootPtr);

    system("PAUSE");

    }

     

     

    void insertNode (TreeNodePtr *treePtr,char word[20]){

        TreeNode *temp = NULL;

        if(*treePtr == NULL)

        {

            temp = (TreeNode *)malloc(sizeof(TreeNode));

            temp->leftPtr = NULL;

            temp->rightPtr = NULL;

            temp->data[20] =  word[20];

            *treePtr = temp;

            

        }

    else if(strcmp(word,(*treePtr)->data)<0){

             

             

    insertNode(&((*treePtr)->leftPtr),word);

    }

    else if (strcmp(word,(*treePtr)->data)>0){

             

             

    insertNode(&((*treePtr)->rightPtr),word);

    }

    else{

    number++;

    }

    }

    void alphabetic(TreeNodePtr treePtr){

    if(treePtr!=NULL){

    alphabetic(treePtr->leftPtr);

    printf("%3d\n",treePtr->leftPtr);

    alphabetic(treePtr->rightPtr);

    }

    }

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    do{

    c=fscanf(fp1,"%s",first);

    insertNode(&rootPtr,first);

     

    printf("%s\n",rootPtr->data);

     

     

    }while(c!=EOF);

    fclose(fp1);

    alphabetic(rootPtr);

    system("PAUSE");

    }

     

     

    sadece ilk satırı mı ekliyor uygulama ? şurda sıkıntı direk kapatıyosun dosyayı 


    Si vis pacem para bellum.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    akustikelektrik
    akustikelektrik's avatar
    Kayıt Tarihi: 09/Şubat/2013
    Erkek

    zaten tek satırda yaklaşık 11 tane kelime var hocam.Dosyayı ne zaman kapatmak gerekiyor,pek farketmedi değiştirdiğimde.Oluşturduğum tree den kelimeleri yazdırması gerekiyor,dosyayı kapatsam bile sorun olmamalı bence

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek
    akustikelektrik bunu yazdı

    zaten tek satırda yaklaşık 11 tane kelime var hocam.Dosyayı ne zaman kapatmak gerekiyor,pek farketmedi değiştirdiğimde.Oluşturduğum tree den kelimeleri yazdırması gerekiyor,dosyayı kapatsam bile sorun olmamalı bence

    do while döngüsü kullanmışsın yani do 1 kere içindekileri yapıp while a geçiyor while da ilk satırda dosyayı kapatmışsın onun yerine direk while içine al döngüyü çıkıştada dosyayı kapat o şekilde düzelir gibi duruyor 


    Si vis pacem para bellum.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    c=fscanf(fp1,"%s",first);

     

    while(c!=EOF);

        insertNode(&rootPtr,first);

        printf("%s\n",rootPtr->data);

    }

     

    fclose(fp1);

    alphabetic(rootPtr);

    system("PAUSE");


    Si vis pacem para bellum.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    akustikelektrik
    akustikelektrik's avatar
    Kayıt Tarihi: 09/Şubat/2013
    Erkek
    SinusX bunu yazdı

    c=fscanf(fp1,"%s",first);

     

    while(c!=EOF);

        insertNode(&rootPtr,first);

        printf("%s\n",rootPtr->data);

    }

     

    fclose(fp1);

    alphabetic(rootPtr);

    system("PAUSE");

    bu da olmadı hocam..Hatayı şu satırda veriyor.

    insertNode(&rootPtr,first);

    hata şu şekilde :

    [Warning] passing arg 2 of `insertNode' makes integer from pointer without a cast


    Bilen birisi var mı ?

     

Toplam Hit: 2519 Toplam Mesaj: 6