大家好,这是我在这里的第一个问题。我将尽可能简短地解释我的问题。因此,我正在尝试根据其首字母将一个字符串分类为 26 个不同的列表。我不知道这是否是一种正确的方法,因为我还只是一名学生。当我运行此代码时,我收到以下错误,我找不到任何解决方案。
错误 C4700:使用了未初始化的局部变量"项"
这是我的节点结构,我的链表就像任何其他链表类一样。
模板
struct nodeType
{
int wCount;
Type info;
nodeType<Type> *link;
};
所以我的问题是为什么我会收到此错误,是否有更好的方法来解决我的问题。(顺便说一下,这只是我通常尝试做的事情的一部分,我应该阅读一个处理过的文本文件,并根据它们的首字母将每个单词插入到列表中,如果它们存在于列表中,则增加它们的数量。
#include <iostream>
#include "unorderedLinkedListType.h"
#include <string>
using namespace std;
int main()
{
unorderedLinkedList<string> listA, listB, listC, listD, listE, listF, listG,
listH, listI, listJ, listK, listL, listM, listN, listO, listP, listQ, listR,
listS, listT, listU, listV, listW, listX, listY, listZ;
nodeType<string> *item; // Node Definition
item->info = "trying";
item->link = NULL;
item->wCount = 0;
char first; // Taking the initial of a string
first = item->info[0];
switch (first) // Switch case for insertion to lists
{
case 'a': if (listA.search(item->info)){ item->wCount++; }
else { listA.insertFirst(item->info); }
break;
case 'b': if (listB.search(item->info)){ item->wCount++; }
else { listB.insertFirst(item->info); }
break;
case 'c': if (listC.search(item->info)){ item->wCount++; }
else { listC.insertFirst(item->info); }
break;
case 'd': if (listD.search(item->info)){ item->wCount++; }
else { listD.insertFirst(item->info); }
break;
case 'e': if (listE.search(item->info)){ item->wCount++; }
else { listE.insertFirst(item->info); }
break;
case 'f': if (listF.search(item->info)){ item->wCount++; }
else { listF.insertFirst(item->info); }
break;
case 'g': if (listG.search(item->info)){ item->wCount++; }
else { listG.insertFirst(item->info); }
break;
case 'h': if (listH.search(item->info)){ item->wCount++; }
else { listH.insertFirst(item->info); }
break;
case 'i': if (listI.search(item->info)){ item->wCount++; }
else { listI.insertFirst(item->info); }
break;
case 'j': if (listJ.search(item->info)){ item->wCount++; }
else { listJ.insertFirst(item->info); }
break;
case 'k': if (listK.search(item->info)){ item->wCount++; }
else { listK.insertFirst(item->info); }
break;
case 'l': if (listL.search(item->info)){ item->wCount++; }
else { listL.insertFirst(item->info); }
break;
case 'm': if (listM.search(item->info)){ item->wCount++; }
else { listM.insertFirst(item->info); }
break;
case 'n': if (listN.search(item->info)){ item->wCount++; }
else { listN.insertFirst(item->info); }
break;
case 'o': if (listO.search(item->info)){ item->wCount++; }
else { listO.insertFirst(item->info); }
break;
case 'p': if (listP.search(item->info)){ item->wCount++; }
else { listP.insertFirst(item->info); }
break;
case 'q': if (listQ.search(item->info)){ item->wCount++; }
else { listQ.insertFirst(item->info); }
break;
case 'r': if (listR.search(item->info)){ item->wCount++; }
else { listR.insertFirst(item->info); }
break;
case 's': if (listS.search(item->info)){ item->wCount++; }
else { listS.insertFirst(item->info); }
break;
case 't': if (listT.search(item->info)){ item->wCount++; }
else { listT.insertFirst(item->info); }
break;
case 'u': if (listU.search(item->info)){ item->wCount++; }
else { listU.insertFirst(item->info); }
break;
case 'v': if (listV.search(item->info)){ item->wCount++; }
else { listV.insertFirst(item->info); }
break;
case 'w': if (listW.search(item->info)){ item->wCount++; }
else { listW.insertFirst(item->info); }
break;
case 'x': if (listX.search(item->info)){ item->wCount++; }
else { listX.insertFirst(item->info); }
break;
case 'y': if (listY.search(item->info)){ item->wCount++; }
else { listY.insertFirst(item->info); }
break;
case 'z': if (listZ.search(item->info)){ item->wCount++; }
else { listZ.insertFirst(item->info); }
break;
}
listT.print(); // Printing the listT to try out my code
return 0;
}
nodeType<string> *item;
是指向项目的指针。但是,您从未分配过该项并初始化指针。请使用std::map
而不是这个令人毛骨悚然的开关语句和 26 个列表。
#include <map>
int main()
{
std::map< char, unorderedLinkedList<string> > listMap;
nodeType<string> *item = new nodeType<string>();
item->info = "trying";
item->link = NULL;
item->wCount = 0;
char first;
first = item->info[0];
if (listMap[first].search(item->info))
{
item->wCount++;
}
else
{
listMap[first].insertFirst(item->info);
}
// ...
}