C++ 需要帮助了解列表容器吗
我不确定这个链表会是什么样子C++ 需要帮助了解列表容器吗,c++,arrays,list,linked-list,C++,Arrays,List,Linked List,我不确定这个链表会是什么样子 list<string> hashTable [HASH_TABLE_SIZE]; 但是什么呢 list<string> hashTable [HASH_TABLE_SIZE]; 列出哈希表[哈希表大小]; 看起来像?它看起来像这样: Head->[]->[]->[]->NULL [Head][Head][Head]... ^ ^ ^ | | | v v
list<string> hashTable [HASH_TABLE_SIZE];
但是什么呢
list<string> hashTable [HASH_TABLE_SIZE];
列出哈希表[哈希表大小];
看起来像?它看起来像这样:
Head->[]->[]->[]->NULL
[Head][Head][Head]...
^ ^ ^
| | |
v v v
[ ] [ ] [ ]
^ ^ ^
| | |
v v v
NULL NULL NULL
这是一个std::list的数组,std::string的数组,std::list可以向前和向后迭代,所以它实际上是一个双链接列表。看起来更像下图 每个: 哈希表[索引]: begin()-**-rbegin() | | v v rend()结束() /*按前进顺序遍历哈希表中的第个索引列表并将其打印出来*/ int f=0; 列表::迭代器fwdItr=hashTable[index].begin(); for(;fwdItr!=哈希表[index].end();++f,++fwdItr) { printf(“fwd列表项%d=%s\n”,f,*fwdItr); } /*在哈希表中以相反的顺序遍历索引的第个列表并将其打印出来*/ int r=0; list::reverse_iterator revItr=hashTable[index].rbegin(); for(;revItr!=哈希表[index].rend();++r,++revItr) { printf(“修订列表条目%d=%s\n”,r,*revItr); }
希望这有助于更好地说明std::list…第一个不是链表;它是一个链表数组。取单个实例的值,画出多个值,每个值对应各自的数组槽。@WhozCraig是对的,但是您可以有一个链表的链表。。可以再筑巢了。
[Head][Head][Head]...
^ ^ ^
| | |
v v v
[ ] [ ] [ ]
^ ^ ^
| | |
v v v
NULL NULL NULL
hashTable[index]:
begin()-* *-rbegin()
| |
v v
rend()<-[]<->[]<->[]->end()
/* walk index'th list in hashTable in forward order and print it out */
int f = 0;
list<string>::iterator fwdItr = hashTable[index].begin();
for (; fwdItr != hashTable[index].end(); ++f, ++fwdItr)
{
printf("fwd list entry %d = %s\n", f, *fwdItr);
}
/* walk index'th list in hashTable in reverse order and print it out */
int r = 0;
list<string>::reverse_iterator revItr = hashTable[index].rbegin();
for (; revItr != hashTable[index].rend(); ++r, ++revItr)
{
printf("rev list entry %d = %s\n", r, *revItr);
}