C Dilinde Binary Tree İçerisine String Ekleme
-
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);
}
}
-
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ı
-
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
-
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
-
c=fscanf(fp1,"%s",first);
while(c!=EOF);
insertNode(&rootPtr,first);
printf("%s\n",rootPtr->data);
}
fclose(fp1);
alphabetic(rootPtr);
system("PAUSE");
-
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ı ?
