如何打印由另一个字符串链表组成的链表

How to print a linked list that is made up of another linked list of string?

本文关键字:链表 字符串 另一个 何打印 打印      更新时间:2023-10-16

我决定使用STL列表,尽管我们的老师一直在教我们一个根据书制作的列表。我之所以做这个更改,是因为书中的头文件对我不起作用,很可能是我的错。因此,在网上研究后,我尽我所能了解STL列表的迭代器是如何工作的。以下是我为打印由类型list<list<string>>定义的链表x而编写的代码。

  list < list <string>> x;
while (!inData.fail())
{
    //...
    string str(cstr);//cstr at this point is the sorted string
    bool match = false;
    list <string> inner_list;
    inner_list.push_back(str);
    list<list <string>>::const_iterator cit;
    for (cit = x.begin(); !match && cit !=x.end(); advance(cit,1))
    {
        if (*cit == inner_list)
        {
            inner_list.push_back(temp2); //temp2 is unsorted string
            match = true;
        }
    }
    if (match ==false) x.push_back(inner_list);

}

//printing

list<list <string>>::const_iterator it; 
    list<string>::const_iterator it2;
    for (it = x.begin(); it != x.end(); it++)
    {
        for (it2 = it->begin(); it2 != it->end(); it2++)
        {
            cout << *it2 << " ";
        }
    }

我得到了一个列表迭代器取消引用错误,但我不知道为什么。如果有任何帮助或提示,我将不胜感激。如果有任何不清楚或需要解释的地方,请告诉我。

您可以使用以下代码。希望这对你有帮助。谢谢

typedef long long ll;
ll N,M;
string str;
list<string> innerList;
list<list<string> > Data;
cin >> M; // M holds the no. of nodes containing linked list of strings //
for(ll i=0; i<M; i++){
    getchar();
    cin >> N; // No. of strings containing in inner linked list 
    getchar();
    for(ll i=0; i<N; i++){
        cin >> str;
        innerList.push_back(str);
    }
    Data.push_back(innerList);
    innerList.clear();
}
// print data //
for(list<list<string> >::iterator it = Data.begin(); it!=Data.end(); it++){
    for(list<string>::iterator iit = (*it).begin(); iit!=(*it).end(); iit++){
        cout << (*iit) << "  " ;
    }
    cout << "n";
}