{"id":181,"date":"2016-12-13T09:57:17","date_gmt":"2016-12-13T01:57:17","guid":{"rendered":"http:\/\/www.secondsend.com\/wordpress\/?p=181"},"modified":"2016-12-13T09:57:17","modified_gmt":"2016-12-13T01:57:17","slug":"5%e5%88%86%e9%92%9f%e5%bf%ab%e9%80%9f%e5%ae%9e%e7%8e%b0%e4%b8%80%e4%b8%aa%e5%93%88%e5%b8%8c%e8%a1%a8%ef%bc%88clang%ef%bc%89","status":"publish","type":"post","link":"http:\/\/www.homconnect.cn\/?p=181","title":{"rendered":"5\u5206\u949f\u5feb\u901f\u5b9e\u73b0\u4e00\u4e2a\u54c8\u5e0c\u8868\uff08Clang\uff09"},"content":{"rendered":"<p>\u54c8\u5e0c\u8868\uff08Hash table\uff0c\u4e5f\u53eb\u6563\u5217\u8868\uff09\uff0c\u662f\u6839\u636e\u952e\uff08Key\uff09\u800c\u76f4\u63a5\u8bbf\u95ee\u5728\u5185\u5b58\u5b58\u50a8\u4f4d\u7f6e\u7684\u6570\u636e\u7ed3\u6784\u3002 \u4e5f\u5c31\u662f\u8bf4\uff0c\u5b83\u901a\u8fc7\u8ba1\u7b97\u4e00\u4e2a\u5173\u4e8e\u952e\u503c\u7684\u51fd\u6570\uff0c\u5c06\u6240\u9700\u67e5\u8be2\u7684\u6570\u636e\u6620\u5c04\u5230\u8868\u4e2d\u4e00\u4e2a\u4f4d\u7f6e\u6765\u8bbf\u95ee\u8bb0\u5f55\uff0c\u8fd9\u52a0\u5feb\u4e86\u67e5\u627e\u901f\u5ea6\u3002 \u8fd9\u4e2a\u6620\u5c04\u51fd\u6570\u79f0\u505a\u6563\u5217\u51fd\u6570\uff0c\u5b58\u653e\u8bb0\u5f55\u7684\u6570\u7ec4\u79f0\u505a\u6563\u5217\u8868\u3002 \u2014\u2014\u2014\u2014\u7ef4\u57fa\u767e\u79d1<\/p>\n<p>\u5728\u4e00\u4e9b\u5408\u7406\u7684\u5047\u8bbe\u4e0b\uff0c\u5728\u54c8\u5e0c\u8868\u4e2d\u7684\u6240\u6709\u64cd\u4f5c\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u53ef\u4ee5\u7b80\u5355\u770b\u4f5cO(1) \u3002\u5b83\u901a\u8fc7\u8ba1\u7b97\u4e00\u4e2a\u952e\u7684\u54c8\u5e0c\u503c\u6765\u5feb\u901f\u5b9a\u4f4d\u952e\u503c\u5728\u54c8\u5e0c\u8868\u7684\u4f4d\u7f6e\u3002 \u5b9e\u73b0\u4e00\u4e2a\u597d\u7684\u54c8\u5e0c\u8868\u7684\u5173\u952e\u662f\u4e00\u4e2a\u597d\u7684\u54c8\u5e0c\u7b97\u6cd5\u4e0e\u4e00\u4e2a\u5904\u7406\u54c8\u5e0c\u51b2\u7a81\u7684\u65b9\u6cd5 \u3002\u5e38\u89c1\u7684\u7b80\u5355\u54c8\u5e0c\u7b97\u6cd5\u6709BKDRHash\uff0cAPHash\uff0cDJBHash\uff0cJSHash\uff0cRSHash.\u8f83\u590d\u6742\u6709MD5\u548cSHA1\u4e4b\u6d41\u3002\u54c8\u5e0c\u7b97\u6cd5\u7684\u597d\u574f\u76f4\u63a5\u5f71\u54cd\u54c8\u5e0c\u8868\u5b58\u53d6\u7684\u6548\u7387\u3002 \u800c\u5904\u7406\u54c8\u5e0c\u51b2\u7a81\u7684\u529e\u6cd5\u6709\u5f00\u653e\u5bfb\u5740\u6cd5\u4e0e\u62c9\u94fe\u6cd5\u3002\u4e0b\u9762\u793a\u4f8b\u4f7f\u7528\u7684\u662f\u62c9\u94fe\u6cd5<\/p>\n<h6>BKDRHash\u54c8\u5e0c\u7b97\u6cd5<\/h6>\n<p>\u4e0a\u8ff0\u591a\u4e2a\u54c8\u5e0c\u7b97\u6cd5\u4e2d BKDRHash\u5728\u6548\u7387\uff0c\u5e73\u8861\uff0c\u5747\u5300\u5206\u5e03\u65b9\u9762\u8868\u73b0\u7a81\u51fa\uff0c\u5e76\u4e14\u5b83\u7684\u5b9e\u73b0\u4e5f\u662f\u6700\u5bb9\u6613\u7406\u89e3\u4e0e\u8bb0\u5fc6\u7684\u3002\u5b9e\u73b0\u5982\u4e0b\uff1a<\/p>\n<p><em>\/** <\/em><em>\u00a0* BKDR hash function in clang<\/em><em> * @param key char* <\/em><em>\u5b57\u7b26\u4e32<\/em><em> * @return int hashed value, we will get a int value<\/em><em> *\/<\/em><strong>int<\/strong> <strong>bkdrHash<\/strong>( <strong>char<\/strong> *key ){\u00a0\u00a0\u00a0 uint seed = 131;<em>\/\/i can be 13, 131, 1313,131313 etc<\/em>\u00a0\u00a0\u00a0 uint hash = 0; \u00a0\u00a0\u00a0<strong>while<\/strong>( *key != &#8216;\\n&#8217; &amp;&amp; *key != 0 )\u00a0\u00a0\u00a0 {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 hash = hash * seed + ( *key++ );\u00a0\u00a0\u00a0 }\u00a0\u00a0 \u00a0<strong>return<\/strong> ( hash &amp; 0x7FFFFFFF );}<b><\/b><\/p>\n<h6>\u54c8\u5e0c\u8868\uff08\u62c9\u94fe\u6cd5\u5904\u7406\u51b2\u7a81\uff09<\/h6>\n<p>\u793a\u610f\u56fe\uff1a\uff08\u56fe\u7247\u6765\u6e90\uff1a<a href=\"http:\/\/blog.csdn.net\/v_JULY_v\/article\/details\/6256463%EF%BC%89\">http:\/\/blog.csdn.net\/v_JULY_v\/article\/details\/6256463\uff09<\/a><\/p>\n<p>\u4e0a\u56fe\u4e2d\uff0c\u5de6\u5219\u662f\u4e00\u4e2a\u6570\u7ec4\uff0c\u4fdd\u5b58\u7684\u662f\u6bcf\u4e2a\u5355\u5411\u94fe\u8868\u7684\u5934\u6307\u9488\u3002\u5b9e\u9645\u7684\u503c\u5c31\u5b58\u50a8\u5728\u94fe\u8868\u4e2d<\/p>\n<h6>\u5355\u5411\u94fe\u8868\u4e2d\u7684\u8282\u70b9\u7684\u6570\u636e\u7ed3\u6784\u4e0e\u6570\u7ec4\u5b9a\u4e49\u4ee3\u7801<\/h6>\n<p><b><\/b><em>\/** <\/em><em>\u5355\u5411\u94fe\u8868\u7684\u8282\u70b9\u7684\u7ed3\u6784\u4f53<\/em><em> *\/<\/em><strong>typedef<\/strong> <strong>struct<\/strong> _htItem{\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>struct<\/strong> _htItem\u00a0 *next;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>char<\/strong> *key_string;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 uint fid;} htItem;<em>\/** <\/em><em>\u53d6\u5f97<\/em><em>Key<\/em><em>\u5728\u6570\u7ec4\u4e2d\u7684\u6620\u5c04\u4f4d\u7f6e<\/em><em> *\/<\/em>uint <strong>htIndex<\/strong>( <strong>char<\/strong> *key, htItem **ht ){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 uint hashedKey = bkdrHash( key );\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 uint length = (ht[0]-&gt;fid-1);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>return<\/strong> (uint)hashedKey % length+1;}<em>\/** <\/em><em>\u5b9a\u4e49\u6570\u7ec4<\/em><em> *\/<\/em>htItem *item[21]; <em>\/\/<\/em><em>\u4e3a\u65b9\u4fbf\u540e\u53f0\u5b9e\u73b0\uff0c\u5728\u5b9a\u4e49\u5728\u6570\u7ec4\u7684\u65f6\u5019\uff0c\u6211\u4eec\u7ed9\u591a\u4e00\u4e2a\u957f\u5ea6\uff0c\u7b2c\u4e00\u4e2a\u6570\u636e\u4e0d\u5b58\u50a8\u6570\u636e\uff0c\u53ea\u5b58\u653e\u6570\u7ec4\u957f\u5ea6\uff0c\u5269\u4f59\u7684\u5143\u7d20\u7a7a\u95f4<\/em><b><\/b><\/p>\n<h6>\u521d\u59cb\u5316\u6570\u7ec4\u5143\u7d20<\/h6>\n<p><b><\/b><em>\/** <\/em><em>\u6709\u5fc5\u8981\u5bf9\u6570\u7ec4\u5143\u7d20\u8fdb\u884c\u4e00\u6b21<\/em><em>0<\/em><em>\u503c<\/em> <em>\u521d\u59cb\u5316<\/em><em> *\/<\/em><strong>void<\/strong> <strong>htInit<\/strong>( htItem **ht, uint length ){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>int<\/strong> i;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>for<\/strong>( i=0; i&lt;length; i++ ){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ht[i] = (htItem*)malloc(<strong>sizeof<\/strong>(htItem));\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 memset( ht[i], 0, <strong>sizeof<\/strong>(htItem) );\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ht[0]-&gt;fid = length;}<b><\/b><\/p>\n<h6>\u6570\u636e\u7684\u63d2\u5165\u548c\u66f4\u65b0<\/h6>\n<p>\u9996\u5148\u901a\u8fc7\u54c8\u5e0c\u51fd\u6570\u627e\u5230Key\u5bf9\u5e94\u5728\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\uff0c\u518d\u904d\u5386\u94fe\u8868\uff0c\u5982\u679c\u5728\u94fe\u8868\u4e2d\u67e5\u5230\u76f8\u540c\u7684key,\u5c31\u76f4\u63a5\u628a\u8be5\u8282\u70b9\u7684\u6570\u636e\u66f4\u65b0\uff0c\u5426\u5219malloC\u4e00\u4e2a\u8282\u70b9\uff0c\u5e76\u628a\u8282\u70b9\u653e\u5230\u94fe\u8868\u672b\u5c3e\u3002<\/p>\n<p><em>\/** set hashTable element *\/<\/em>uint <strong>htSet<\/strong>( <strong>char<\/strong> *key, uint fid,\u00a0 htItem **ht ){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 uint i = htIndex( key, ht );\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htItem *item = ht[i];\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>while<\/strong>( item-&gt;next )\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>if<\/strong>( strcmp(key, item-&gt;next-&gt;key_string) == 0 ){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item-&gt;next-&gt;fid = fid;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>return<\/strong> 0;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<strong>else<\/strong>{\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item = item-&gt;next;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item-&gt;next = (htItem*)malloc(<strong>sizeof<\/strong>(htItem));\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item-&gt;next-&gt;fid = fid;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item-&gt;next-&gt;key_string = key;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>return<\/strong> 0;}<b><\/b><\/p>\n<h6>\u83b7\u53d6\u6570\u636e<\/h6>\n<p>\u9996\u5148\u901a\u8fc7\u54c8\u5e0c\u51fd\u6570\u5b9a\u4f4dKEY\u5728\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\uff0c\u518d\u4f9d\u6b21\u5bf9\u6bd4KEY\u503c\uff0c\u5982\u679c\u547d\u4e2d\u5c31\u8fd4\u56de\u76f8\u5e94\u7684\u503c\uff0c\u5426\u5219\u8fd4\u56de\u7a7a\u503c<\/p>\n<p><em>\/** get hashTable elements *\/<\/em>htItem* <strong>htGet<\/strong>( <strong>char<\/strong> *key, htItem **ht ){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 uint i = htIndex( key, ht);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htItem *item = ht[i]-&gt;next;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htItem *tmp = (htItem*)malloc(<strong>sizeof<\/strong>(htItem));\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 memset(tmp, 0, <strong>sizeof<\/strong>(htItem));\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>while<\/strong>( item )\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>if<\/strong>( strcmp(key, item-&gt;key_string) == 0 ){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 printf(&#8220;hiting %s\\n&#8221;, key);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmp-&gt;fid = item-&gt;fid;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmp-&gt;key_string = item-&gt;key_string;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>return<\/strong> tmp;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item = item-&gt;next;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>return<\/strong>;}<b><\/b><\/p>\n<h6>\u5220\u9664\u6570\u636e<\/h6>\n<p><b><\/b><em>\/** delete one element of hashtable *\/<\/em><strong>int<\/strong> <strong>htDel<\/strong>(<strong>char<\/strong> *key, htItem **ht){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 uint i = htIndex(key, ht);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htItem *item = ht[i];\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>while<\/strong>(item-&gt;next){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>if<\/strong>(strcmp(key, item-&gt;next-&gt;key_string) == 0 ){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htItem *tmp = item-&gt;next;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item-&gt;next = tmp-&gt;next;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0free(tmp);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<strong>return<\/strong> 0;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item = item-&gt;next;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>return<\/strong> -1;}<b><\/b><\/p>\n<h6>\u6253\u5370\u5b8c\u6574hashtable\u4e2d\u7684\u5143\u7d20<\/h6>\n<p><b><\/b><strong>void<\/strong> <strong>print_hashTable<\/strong>( htItem **ht ){\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 uint length = ht[0]-&gt;fid;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 uint i;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htItem *item;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>for<\/strong>( i = 1; i &lt; length; i++ )\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item = ht[i]-&gt;next;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<strong>while<\/strong>(item)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0printf(&#8220;%s =&gt; %d\\n&#8221;,item-&gt;key_string, item-&gt;fid);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 item = item-&gt;next;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }}<\/p>\n<p>\u7b80\u5355\u51e0\u4e2a\u65b9\u6cd5\u5c31\u5b9e\u73b0\u4e86\u54c8\u5e0c\u8868\u7684\u589e\u5220\u67e5\u6539\u3002<\/p>\n<h6>\u4f7f\u7528\u793a\u4f8b<\/h6>\n<p><b><\/b><em>\/** <\/em><em>\u5b9a\u4e49\u4e0e\u521d\u59cb\u5316<\/em><em> *\/<\/em>\u00a0\u00a0\u00a0 htItem *item[101]; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htInit(item, 101);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <em>\/** <\/em><em>\u6dfb\u52a0\u5143\u7d20<\/em><em> *\/<\/em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htSet(&#8220;longmon&#8221;,100,item); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htSet(&#8220;natalie&#8221;, 1000,item);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htSet(&#8220;xiaoqiong&#8221;,99, item);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <em>\/** <\/em><em>\u6253\u5370<\/em><em>\u2474<\/em><em> *\/<\/em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 print_hashTable(item);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <em>\/** <\/em><em>\u5220\u9664\u4e00\u4e2a\u5143\u7d20<\/em><em> *\/<\/em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htDel(&#8220;natalie&#8221;, item);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <em>\/** <\/em><em>\u6253\u5370<\/em><em>\u2475<\/em><em> *\/<\/em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 print_hashTable(item);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <em>\/** <\/em><em>\u83b7\u53d6<\/em><em>key<\/em><em>\u4e3a<\/em><em>longmon<\/em><em>\u7684\u503c<\/em><em> *\/<\/em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 htItem *tmpitem = htGet(&#8220;longmon&#8221;, item); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <em>\/** <\/em><em>\u6253\u5370<\/em><em>\u2476<\/em><em> *\/<\/em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 printf(&#8220;key: %s =&gt; val:%d\\n&#8221;, tmpitem-&gt;key_string, tmpitem-&gt;fid);<\/p>\n<p>\u8f93\u51fa\u7ed3\u679c<\/p>\n<p><strong>#<\/strong><strong>\u6253\u5370<\/strong><strong>\u2474<\/strong> xiaoqiong =&gt; 99natalie =&gt; 1000longmon =&gt; 100<strong>#<\/strong><strong>\u6253\u5370<\/strong><strong>\u2475<\/strong> xiaoqiong =&gt; 99longmon =&gt; 100<strong>#<\/strong><strong>\u6253\u5370<\/strong><strong>\u2476<\/strong> Key: longmon =&gt; val: 100<\/p>\n<p>\u5b8c\u6574\u4ee3\u7801\u00a0<a href=\"https:\/\/github.com\/longmon\/hashTable_in_c\">https:\/\/github.com\/longmon\/hashTable_in_c<\/a><\/p>\n<h6>\u54c8\u5e0c\u8868\u662fPHP\u5185\u6838\u7684\u57fa\u77f3\u3002<\/h6>\n<p>PHP\u5185\u6838\u4e2d\u7684\u54c8\u5e0c\u8868\u662f\u5341\u5206\u91cd\u8981\u7684\u6570\u636e\u7ed3\u6784\uff0cPHP\u7684\u5927\u90e8\u5206\u7684\u8bed\u8a00\u7279\u6027\u90fd\u662f\u57fa\u4e8e\u54c8\u5e0c\u8868\u5b9e\u73b0\u7684\uff0c \u4f8b\u5982\uff1a\u53d8\u91cf\u7684\u4f5c\u7528\u57df\u3001\u51fd\u6570\u8868\u3001\u7c7b\u7684\u5c5e\u6027\u3001\u65b9\u6cd5\u7b49\uff0cZend\u5f15\u64ce\u5185\u90e8\u7684\u5f88\u591a\u6570\u636e\u90fd\u662f\u4fdd\u5b58\u5728\u54c8\u5e0c\u8868\u4e2d\u7684\u3002\u800cPHP\u5185\u6838\u4e2d\u7684\u54c8\u5e0c\u8868\u5904\u7406\u51b2\u7a81\u4f7f\u7528\u7684\u4e5f\u662f\u62c9\u94fe\u6cd5\u3002<\/p>\n<p>\u6269\u5c55\u9605\u8bfb\uff1a<\/p>\n<ul>\n<li><a href=\"http:\/\/www.php-internals.com\/book\/?p=chapt03\/03-01-02-hashtable-in-php\">PHP\u7684\u54c8\u5e0c\u8868\u5b9e\u73b0<\/a><\/li>\n<li><a href=\"http:\/\/www.laruence.com\/2011\/12\/30\/2435.html\">PHP\u6570\u7ec4\u7684Hash\u51b2\u7a81\u5b9e\u4f8b<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u54c8\u5e0c\u8868\uff08Hash table\uff0c\u4e5f\u53eb\u6563\u5217\u8868\uff09\uff0c\u662f\u6839\u636e\u952e\uff08Key\uff09\u800c\u76f4\u63a5\u8bbf\u95ee\u5728\u5185\u5b58\u5b58\u50a8\u4f4d\u7f6e\u7684\u6570\u636e\u7ed3\u6784\u3002 \u4e5f\u5c31\u662f\u8bf4\uff0c &hellip; <a href=\"http:\/\/www.homconnect.cn\/?p=181\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201c5\u5206\u949f\u5feb\u901f\u5b9e\u73b0\u4e00\u4e2a\u54c8\u5e0c\u8868\uff08Clang\uff09\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,22],"tags":[],"_links":{"self":[{"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=\/wp\/v2\/posts\/181"}],"collection":[{"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=181"}],"version-history":[{"count":1,"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=\/wp\/v2\/posts\/181\/revisions"}],"predecessor-version":[{"id":182,"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=\/wp\/v2\/posts\/181\/revisions\/182"}],"wp:attachment":[{"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=181"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.homconnect.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}