簡體   English   中英

查找以特定字符開頭並顯示在 C 中的所有可能單詞(使用二叉樹的字典實現)

[英]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 上了解更多信息。

簡而言之:

  1. 維護一個狀態標志,“顯示”,指示您是否應該顯示該詞。 開始時, showing = FALSE

  2. 搜索以任何字符開頭的第一個單詞。

  3. 設置showing = TRUE並執行您必須執行的操作以發出單詞。

  4. 從搜索轉換為遍歷。

  5. 繼續,直到用完以該字符開頭的單詞。

  6. 設置showing = FALSE並向上返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM