#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#define WORDMAX 64
typedef struct tnode{
char word[WORDMAX];
/* int count=0; */
int count;
struct tnode *left;
struct tnode *right;
}Node;
Node* makeNode(const char *str){
/* ノード作成 */
Node *root;
root=(Node *)malloc(sizeof(Node));
strcpy(root->word, str);
root->count=1;
root->left=root->right=NULL;
return root;
}
Node* addNode(Node* p, const char *str){
/* ノード追加処理 */
if (p==NULL){ /*今いるところが空欄なら新ノードを作成*/
p=makeNode(str);
}
else if (!strcmp(str, p->word))
p->count++;
else if (strcmp(str, p->word)<0)
p->left=addNode(p->left, str);
else
p->right=addNode(p->right, str);
return p;
}
void TraversalNode(const Node *p){
/* 解析と出力*/
if (p!=NULL){
TraversalNode(p->left);
printf("%s %4d\n", p->word, p->count);
TraversalNode(p->right);
}
}
int main(void){
FILE *fp;
int i, state=0;
char c, str[WORDMAX];
Node root={"\0",0, NULL, NULL};
str[0]='\0';
while(getword(word, MAXWORD)!=EOF)
/* ファイル操作 */
fp=fopen("file1.txt", "r");
/*ここでファイルから文章を読み込み、英単語をaddnode()に渡す予定です。*/
}
TraversalNode(&root);/*ルートの位置からトラバーサルしながら出力する*/
fclose(fp);
}
|