K R 6 5用二叉樹統計單詞出現的次數

2021-06-25 19:17:37 字數 988 閱讀 5644

因為預先不知道出現的單詞列表,無法方便地排序並使用折半查詢;也不能分別對輸入中的每個單詞都執行一次線性查詢,開銷太大-->o(n^n)。

所以考慮使用二叉樹的資料結構(o(n*logn))來組織這些單詞,實現如下:

/*

* my practice of k&r 6.5

* */

#include #include #include #include #define maxword 100

/* a binary tree node */

typedef struct tnode_ tnode;

void print_tree(tnode *root);

tnode *add_tree(tnode *root, char *word);

void free_node(tnode *root);

char *copy_string(char *s)

return p;

}tnode *add_tree(tnode *p, char *word)

else

else if(result > 0)

else

} return p;

}void print_tree(tnode *p)

}void free_node(tnode *p)

}int getword(char *word, int n)

if(c != eof)

if(!isalpha(c))

while(n > 0)

else

n--;

} *w = '\0';

return w[0];

}int main()

} print_tree(root);

free_node(root);

return 0;

}

github:

參考:

二叉樹統計單詞個數(二叉搜尋樹實現及模板)

2018.1.20更新。二叉搜尋樹是一種,昂,很厲害的資料結構。下面是大一上學期學c語言的 來自應該燒香供著的聖經 c程式語言 裡面有加節點和列印樹的操作,freetree是我當時自己寫的。本來我現在更新應該加個deletetree來著,但是有點懶。姑且寫一下刪除的演算法,就不實現了。後面有c 模板...

單詞樹(最優二叉樹)

在進行文法分析的時候,通常需要檢測乙個單詞是否在我們的單詞列表裡。為了提高查詢和定位的速度,通常都畫出與單詞列表所對應的單詞查詢樹,其特點如下 1 根結點不包含字母,除根結點外每乙個結點都僅包含乙個大寫英文本母 2 從根結點到某一結點,路徑上經過的字母依次連起來所構成的字母序列,稱為該結點對應的單詞...

C C 語言實現二叉樹統計單詞

2020 4 5 c語言實現 手動輸入乙個個單詞 使用二叉樹統計單詞的個數 include include include 使用列舉定義bool型別 enum bool 此時c語言中enum bool為乙個型別 typedef enum bool bool 定義樹 typedef struct no...