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.removed->size(), HT.M ); //基本信息 0008 for ( Rank i = 0; i < HT.M; i++ ) //输出桶编号 0009 printf ( " %4d ", i ); 0010 printf ( "\n" ); 0011 for ( Rank 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 ( Rank 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 }