0

このリンクされたリストがどのように見えるかはわかりません。

list<string> hashTable [HASH_TABLE_SIZE];

私はこれを信じます:

list<string> hashTable;

次のようになります。

Head->[]->[]->[]->NULL

しかし、何が

list<string> hashTable [HASH_TABLE_SIZE];

のように見える?

4

2 に答える 2

1

次のようになります。

[Head][Head][Head]...
  ^     ^      ^
  |     |      |
  v     v      v
 [ ]   [ ]    [ ]
  ^     ^      ^
  |     |      |
  v     v      v
 NULL  NULL   NULL
于 2013-11-06T04:53:59.713 に答える
0

これは、std::string の std::list の配列です。std::list は前方と後方の両方で繰り返すことができるため、実際には二重にリンクされたリストです。それは下の写真のように見えます

各:

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

これが std::list の説明に役立つことを願っています...

于 2013-11-06T04:59:26.897 に答える