{"id":24,"date":"2019-12-23T22:44:20","date_gmt":"2019-12-23T14:44:20","guid":{"rendered":"http:\/\/ff.mhrooz.xyz\/?p=24"},"modified":"2020-01-14T23:07:15","modified_gmt":"2020-01-14T15:07:15","slug":"12-23-hash","status":"publish","type":"post","link":"https:\/\/blog.mhrooz.xyz\/index.php\/2019\/12\/23\/12-23-hash\/","title":{"rendered":"12.23 Hash"},"content":{"rendered":"<p>\u6ca1\u6709\u6574\u52a8\u6001\u5185\u5b58\uff0c\u9759\u6001hash\u51d1\u4e4e\u770b\u5427<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\">#include &lt;bits\/stdc++.h&gt;\r\nusing namespace std;\r\ntypedef char* Elemtype;\r\ntypedef  int   Status;\r\ntypedef Elemtype KeyType;\r\nstruct HashTable\r\n{\r\n    char elem[100][100];\r\n    int count;\r\n    int sizeindex;\r\n};\r\n#define SUCCESS 1\r\n#define UNSUCCESS 0\r\n#define DUPLICATE -1\r\nint hashsize[500]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,51};\r\nconst char NULLKEY = '\\0';\r\nint getHash(char *s,HashTable &amp;H)\r\n{\r\n    return (s[0]-'a')*2%hashsize[H.sizeindex];\r\n}\r\nStatus EQ(Elemtype K,Elemtype to)\r\n{\r\n    return !strcmp(K,to);\r\n}\r\nvoid collision(int &amp;p , int cnt,HashTable H)\r\n{\r\n    p = (p+cnt)%hashsize[H.sizeindex];\r\n}\r\nStatus SearchHash(HashTable H,KeyType K,int &amp;p,int &amp;c)\r\n{\r\n    p = getHash(K,H);\r\n    while(H.elem[p][0]!=NULLKEY &amp;&amp; !EQ(K,H.elem[p]))\r\n    {\r\n        collision(p,++c,H);\r\n    }\r\n    if(EQ(K,H.elem[p]))return SUCCESS;\r\n    return UNSUCCESS;\r\n}\r\nStatus InsertHash(HashTable &amp;H,Elemtype e)\r\n{\r\n    cout&lt;&lt;e&lt;&lt;':'&lt;&lt;' ';\r\n    int c = 0 , p;\r\n    if(SearchHash(H,e,p,c)) {cout&lt;&lt;111&lt;&lt;endl;return DUPLICATE;}\r\n    else if(c&lt;hashsize[H.sizeindex]\/2){\r\n        cout&lt;&lt;p&lt;&lt;' ';\r\n        for(int i = 0 ; i &lt;= strlen(e) ; i++)\r\n            H.elem[p][i]=e[i];\r\n        ++H.count;\r\n        cout&lt;&lt;\"Success\"&lt;&lt;endl;\r\n        return 1;\r\n    }\r\n    cout&lt;&lt;000&lt;&lt;endl;\r\n    return 0;\r\n}\r\nint main()\r\n{\r\n    char s[1000];\r\n    HashTable H;\r\n    H.sizeindex = 11;\r\n    H.count = 0;\r\n    memset(H.elem,0,sizeof(H.elem));\r\n    srand((int)time(NULL));\r\n    for(int i = 0 ; i &lt;20;i++)\r\n    {\r\n        int length = rand()%30;\r\n        for(int j = 0 ; j &lt; length;j++)\r\n        {\r\n            s[j] = rand()%26+'a';\r\n        }\r\n        s[length] = '\\0';\r\n        cout&lt;&lt;s&lt;&lt;endl;\r\n        InsertHash(H,s);\r\n    }\r\n    cout&lt;&lt;\"+++++++++++++++++++\"&lt;&lt;endl;\r\n    for(int i = 0 ; i &lt; hashsize[H.sizeindex] ;i ++) {\r\n        if (H.elem[i][0])\r\n        {\r\n            int p;int c = 0;\r\n            SearchHash(H,H.elem[i],p,c);\r\n            cout &lt;&lt; i&lt;&lt;' '&lt;&lt;H.elem[i] &lt;&lt; ' '&lt;&lt;p&lt;&lt;endl;\r\n\r\n        }\r\n    }\r\n    return 0;\r\n}<\/pre>\n<p><code><\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6ca1\u6709\u6574\u52a8\u6001\u5185\u5b58\uff0c\u9759\u6001hash\u51d1\u4e4e\u770b\u5427 &nbsp; #include &lt;bits\/stdc++.h&#038;gt<a class=\"more-link\" href=\"https:\/\/blog.mhrooz.xyz\/index.php\/2019\/12\/23\/12-23-hash\/\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">&#8220;12.23 Hash&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":28,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11,12],"tags":[7,8,9],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/posts\/24"}],"collection":[{"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=24"}],"version-history":[{"count":2,"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/posts\/24\/revisions"}],"predecessor-version":[{"id":34,"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/posts\/24\/revisions\/34"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/media\/28"}],"wp:attachment":[{"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=24"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=24"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mhrooz.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}