0001 /****************************************************************************************** 0002 * Hashtable 0003 ******************************************************************************************/ 0004 0005 template <typename K, typename V> //e、value 0006 void UniPrint::p ( Hashtable<K, V>& ht ) { //引用 0007 printf ( "%s[%d]*%d/%d:\n", typeid ( ht ).name(), &ht, ht.N, ht.M ); //基本信息 0008 for ( int i = 0; i < ht.M; i++ ) //输出桶编号 0009 printf ( " %4d ", i ); 0010 printf ( "\n" ); 0011 for ( int i = 0; i < ht.M; i++ ) //输出所有元素 0012 if ( ht.ht[i] ) printf ( "-<%04d>-", ht.ht[i]->key ); //演示用,仅适用于int 0013 else if ( ht.lazyRemoval->test ( i ) ) printf ( "-<xxxx>-" ); 0014 else printf ( "--------" ); 0015 printf ( "\n" ); 0016 for ( int i = 0; i < ht.M; i++ ) //输出所有元素 0017 if ( ht.ht[i] ) printf ( " %c ", ht.ht[i]->value ); //演示用,仅适用于char 0018 // if (ht.ht[i]) printf("%8s", ht.ht[i]->value); //针对Huffman编码中使用的散列表 0019 else if ( ht.lazyRemoval->test ( i ) ) printf ( " <xxxx> " ); 0020 else printf ( " " ); 0021 printf ( "\n" ); 0022 }