我最近做了一个26array并尝试模拟字典。

我似乎不知道该怎么做。我尝试过传递int而不是字符串的链表。我当前的代码创建了26个节点(a-z),然后每个节点都有26个节点(a-z)。我想用int来实现一种方法,例如(1-26)。这些int节点将表示项,并且我要传递的int的链表将包含一组我想在树中表示的int,类似于字符串。

示例:传入集合{1,6,8},而不是诸如“ hello”之类的字符串

   #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;

}

最佳答案

class N26
{
  private:
    N26Node newNode(void);
    N26Node *mRootNode;
  ...
};

N26Node *newNode(void)
{
  N26Node *mRootNode = new N26Node;
  mRootNode = NULL;
  mRootNode->mData = NULL;

  for ( int i = 0; i < 26; i++ )
    mRootNode->mAlphabet[i] = NULL;
  return mRootNode;
}


啊!我的眼睛!

认真地说,您正在尝试一些过于高级的东西。您的代码中充满了错误,无法正常工作。修修补补无济于事,您必须返回指针和链接列表的基础。学习基础知识,在您了解上面的代码有什么问题之前,不要尝试像链表的链表这样的事情。

我会给你一些提示:“内存泄漏”,“悬空指针”,“类型不匹配”,“未定义行为”。

关于c++ - 创建一个具有整数链接列表的n数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13844235/

10-10 09:19
查看更多