[英]Find all possible words that start with a particular character and display in C (Dictionary implementation using Binary trees)
我正在嘗試編寫一個函數,它以節點結構和字母表作為參數,並基於該字母表,它應該向我顯示二叉樹中以該字母表開頭的所有可能的單詞。但是我編寫的函數只是向我顯示了以該字母開頭的第一個單詞。 任何幫助將不勝感激...謝謝這是我編寫的節點結構、函數定義和調用:
//節點結構
typedef struct treeNode
{
char word[100];
char mean[1024];
struct treeNode *right;
struct treeNode *left;
}treeNode;
//Function definition
treeNode *first(treeNode *node,char alpha)
{
if(node==NULL)
return;
else if(alpha==node->word[0])
{
first(node->right,alpha);
printf("Entry for %c found:\n",alpha);
printf("%s means: %s .\n",node->word,node->mean);
first(node->left,alpha);
}
else
return;
}
//Fuction call
case 5:printf("Enter the 1st letter to find the corresponding words\n");
scanf(" %c",&alpha);
first(root,alpha);
break;
找到以給定字母開頭的節點后,您應該遍歷子節點,直到它沒有子節點或葉節點以檢查該節點是否還有子節點,這些子節點可能具有以給定字符開頭的單詞。 順便說一句,為什么函數名稱的返回類型為treeNode ? 您是否試圖返回具有給定字符首字母相同的節點? 或者你只是要展示它?
我發布的只是顯示它,所以我更改了函數返回類型
void first(treeNode *node,char alpha)
{
if(node==NULL)
//do something
else if(node->word[0] < alpha)
first(node->right,alpha);
else if(node->word[0] > alpha)
first(node->left,alpha);
else
{
first(node->left,alpha);
printf("Entry for %c found:\n",alpha);
printf("%s means: %s .\n",node->word,node->mean);
first(node->right,alpha);
}
}
你想要的是樹的有序遍歷,對啟動和停止有一些限制。
在 Wikipedia 上了解更多信息。
簡而言之:
維護一個狀態標志,“顯示”,指示您是否應該顯示該詞。 開始時, showing = FALSE
。
搜索以任何字符開頭的第一個單詞。
設置showing = TRUE
並執行您必須執行的操作以發出單詞。
從搜索轉換為遍歷。
繼續,直到用完以該字符開頭的單詞。
設置showing = FALSE
並向上返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.