如何根据字符串的首字母将其排序到链表中



大家好,这是我在这里的第一个问题。我将尽可能简短地解释我的问题。因此,我正在尝试根据其首字母将一个字符串分类为 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);
    }
    // ...
}

相关内容

  • 没有找到相关文章

最新更新