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)/%d:\n", typeid ( ht ).name(), (int) &ht, ht.N, ht.L, 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.removed->test(i) ) printf ( "-<****>-" ); 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.removed->test(i) ) printf ( " * " ); 0020 else printf ( " " ); 0021 printf ( "\n" ); 0022 }