如何根据首字母将字符串排序到链接列表?

时间:2015-12-19 19:08:53

标签: c++ linked-list

大家好,所以这是我在这里的第一个问题。我会尽量简单地解释我的问题。所以我试图根据他们的首字母将一个字符串排序到26个不同的列表中。我不知道是否这是一个正确的方法,因为我只是一个学生。当我运行此代码时,我得到以下错误,我找不到任何解决方案。

错误C4700:使用了未初始化的本地变量'item'

这是我的节点结构,我的链表与任何其他链表类一样。

模板

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

1 个答案:

答案 0 :(得分:1)

S -> S'S S'-> D|B B -> b|c D -> a|dB 是指向项目的指针。但是你从未分配过该项并初始化了指针。请使用std::map代替此令人毛骨悚然的切换语句和26个列表。

nodeType<string> *item;