gpt4 book ai didi

c++ - 使用整数链表创建一个 n 数组

转载 作者:行者123 更新时间:2023-11-28 07:50:44 27 4
gpt4 key购买 nike

我最近做了一个26array,想模拟一个字典。

我好像不知道怎么做。我试图通过传入一个整数链表而不是一个字符串来工作。我当前的代码创建了 26 个节点 (a-z),然后每个节点都有 26 个节点 (a-z)。我想用整数实现一种方法,比如 (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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com