私は最近 26array を作成し、辞書をシミュレートしようとしました。
私はこれを作る方法を理解できないようです。文字列の代わりにintのリンクリストを渡して作業しようとしました。私の現在のコードは 26 個のノード (az) を作成し、それらの各ノードには 26 個のノード (az) があります。これをintで行う方法、たとえば(1-26)を実装したいと思います。これらの int ノードは項目を表し、渡したい int のリンクリストには、文字列のようにツリーで表現したい一連の int が含まれます。
例: 「hello」などの文字列の代わりに、セット {1, 6 , 8} を渡します
#include <iostream>
using namespace std;
class N26
{
private:
struct N26Node
{
bool isEnd;
struct N26Node *children[26];
}*head;
public:
N26();
~N26();
void insert(string word);
bool isExists(string word);
void printPath(char searchKey);
};
N26::N26()
{
head = new N26Node();
head->isEnd = false;
}
N26::~N26()
{
}
void N26::insert(string word)
{
N26Node *current = head;
for(int i = 0; i < word.length(); i++)
{
int letter = (int)word[i] - (int)'a';
if(current->children[letter] == NULL)
{
current->children[letter] = new N26Node();
}
current = current->children[letter];
}
current->isEnd = true;
}
/* Pre: A search key
* Post: True is the search key is found in the tree, otherwise false
* Purpose: To determine if a give data exists in the tree or not
******************************************************************************/
bool N26::isExists(string word)
{
N26Node *current = head;
for(int i=0; i<word.length(); i++)
{
if(current->children[((int)word[i]-(int)'a')] == NULL)
{
return false;
}
current = current->children[((int)word[i]-(int)'a')];
}
return current->isEnd;
}