C语言实现散列表(链地址法) - 数据结构与算法
#include<stdio.h>\n#include<string.h>\n#include<stdlib.h>\n#include <malloc.h>\n#define size 100\n#define n 20\n\ntypedef struct node \n{//\u5355\u94fe\u8868 \u94fe\u5730\u5740\u6cd5 \n\t\u0069nt number;\n\t\u0063har address[size]; \n\t\u0063har name[size];\n\t\u0073truct node next;\n}newnode,anode;\n\nvoid hashlistinit(newnode p)\n{//\u521d\u59cb\u5316\u94fe\u8868\u5730\u5740 \n\t\u0069nt i;\n\t\u0066or(i=0;i<n;i++)\n\t{\n\t p[i]=NULL;\n\t}\n\n\t\u0070rintf("\u6563\u8868\u521d\u59cb\u5316\u5b8c\u6210");\n}\n\nvoid hashinputname(newnode p)\n{//\u6dfb\u52a0\u8bb0\u5f55 \u7528\u6237\u540d\u4e3a\u5173\u952e\u5b57 \u94fe\u5730\u5740\u6cd5\n\t \u0069nt i,v;\n\t \u0070rintf("\u8f93\u5165\u6570\u636e\n");\n\t \u0070rintf("\u8f93\u5165\u7535\u8bdd\u53f7\u7801\uff0c\u8f93\u5165\u2d1\u7ed3\u675f");\n\t \u0073canf("%d","&v);\n\t \u0077hile(v!=-1)\n{\n\t \u0061node e=(anode)malloc(sizeof(newnode));\n\t e->number=v;\n\t \u0070rintf("\u8bf7\u8f93\u5165\u5730\u5740\n");\n\t \u0073canf("%s",e->address);\n\t \u0070rintf("\u8bf7\u8f93\u5165\u82f1\u6587\u540d\u5b57");\n\t \u0073canf("%s",e->name);\n\t i=(\u0069nt)e->name[0];//\u5f3a\u5236\u8f6c\u6362\u4e3a\u0069nt\u7c7b\u578b \n\t i=i%n;\n\t e->next=p[i];\n\t p[i]=e;\n\t \u0070rintf("\u8f93\u5165\u7535\u8bdd\u53f7\u7801\uff0c\u8f93\u5165\u2d1\u7ed3\u675f");\n\t \u0073canf("%d","&v);\n\t } \n}\n\nvoid hashshow2name(newnode p)\n{//\u67e5\u8be2\u8bb0\u5f55\u4ee5\u7528\u6237\u540d\u4e3a\u5173\u952e\u5b57\u00a0\uff08\u94fe\u5730\u5740\u6cd5 \uff09\n\u0063har a[size];\n\u0061node t;\n\u0069nt i;\n\u0070rintf("\u8f93\u5165\u8981\u67e5\u8be2\u7684\u7528\u6237\u540d\n");\n\u0073canf("%s",a);\n\ni=(\u0069nt)a[0];\n\ni=i%n;\n\tt=p[i];\n\u0077hile(t&&strcmp(t->name,a)!=0)\n{\n\tt=t->next;\n\t }\n\t \u0069f(t==NULL)\n{\n\t \u0070rintf("\u6240\u67e5\u8be2\u7684\u7528\u6237\u4e0d\u5b58\u5728");\n\t }\n\t \u0065lse\n{\n\t \u0070rintf("----------------\n");\n\t \u0070rintf("\u59d3\u540d\uff1a%s\n",t->name);\n\t \u0070rintf("\u7535\u8bdd\uff1a%d\n",t->number);\n\t \u0070rintf("\u5730\u5740\uff1a%s\n",t->address);\n\t \u0070rintf("----------------\n");\n\t }\n}\n\nvoid hashinput(newnode p)\n{//\u6dfb\u52a0\u8bb0\u5f55 \u4ee5\u53f7\u7801\u4e3a\u5173\u952e\u5b57 \u94fe\u5730\u5740\u6cd5\n\t \u0069nt t,v;\n\t \u0070rintf("\u8f93\u5165\u6570\u636e\n");\n\t \u0070rintf("\u8f93\u5165\u7535\u8bdd\u53f7\u7801\uff0c\u8f93\u5165\u2d1\u7ed3\u675f\n");\n\t \u0073canf("%d","&v);\n\t \u0077hile(v!=-1)\n{\n\t \u0061node e=(anode)malloc(sizeof(newnode));\n\t e->number=v;\n\t \u0070rintf("\u8f93\u5165\u5730\u5740\n");\n\t \u0073canf("%s",e->address);\n\t \u0070rintf("\u8f93\u5165\u82f1\u6587\u540d\u5b57\n");\n\t \u0073canf("%s",e->name);\n\t t=e->number%n;\n\t e->next=p[t];\n\t p[t]=e;\n\t \u0070rintf("\u8f93\u5165\u7535\u8bdd\u53f7\u7801\uff0c\u8f93\u5165\u2d1\u7ed3\u675f\n");\n\t \u0073canf("%d","&v);\n\t }\n\n}\n\nvoid hashshow(newnode p)\n{//\u67e5\u8be2\u8bb0\u5f55 \u4ee5\u53f7\u7801\u4e3a\u5173\u952e\u5b57 \u94fe\u5730\u5740\u6cd5 \n\t\u0069nt d,h;\n\t\u0061node t;\n\t\u0070rintf("\u8f93\u5165\u662f\u8981\u67e5\u8be2\u7684\u53f7\u7801\n");\n\t\u0073canf("%d","&d);\n\t\uh=d%n;\n\t\tt=p[h];\n\t\u0077hile(t&&t->number!=d)\n{\n\t \tt=t->next;\n\t}\n\t \u0069f(t==NULL)\n{\n\t \u0070rintf("\u6240\u67e5\u8be2\u7684\u7528\u6237\u4e0d\u5b58\u5728");\n\t}\n\t\u0065lse\n{\n\t \u0070rintf("----------------\n");\n\t \u0070rintf("\u59d3\u540d\uff1a%s\n",t->name);\n\t \u0070rintf("\u7535\u8bdd\uff1a%d\n",t->number);\n\t \u0070rintf("\u5730\u5740\uff1a%s\n",t->address);\n\t \u0070rintf("----------------\n");\n\t }\n}\n\u0069nt scan2()\n{\n\t\u0069nt j1;\n\t\u0070rintf("\n");\n\n\t\u0070rintf(" \u83dc\u5355 2 \n");\n\n\t\u0070rintf("************\n");\n\n\t\u0070rintf("1.\u521d\u59cb\u5316\u6563\u8868\n");\n\t\u0070rintf("2.\u6dfb\u52a0\u8bb0\u5f55(\u4ee5\u7528\u6237\u540d\u4e3a\u5173\u952e\u5b57)\n");\n\t\u0070rintf("3.\u67e5\u8be2\u8bb0\u5f55(\u4ee5\u7528\u6237\u540d\u4e3a\u5173\u952e\u5b57)\n");\n\t\u0070rintf("4.\u6dfb\u52a0\u8bb0\u5f55(\u4ee5\u53f7\u7801\u4e3a\u5173\u952e\u5b57)\n"); \n\t\u0070rintf("5.\u67e5\u8be2\u8bb0\u5f55(\u4ee5\u53f7\u7801\u4e3a\u5173\u952e\u5b57)\n");\n\t\u0070rintf("6.\u9000\u51fa\u7cfb\u7edf\n");\n\t\u0070rintf("\u8f93\u5165\u4f60\u4f7f\u7528\u7684\u529f\u80fd");\n\t\u0073canf("%d","&j1);\n\t\u0072eturn j1;\n\n}\n\u0069nt main()\n{\n\t\u0069nt v,x;\n\t\u006eewnode *p[n];\n\t\uv=1;\n\t\u0077hile(v)\n{\n\t x=scan2();\n\t \u0073witch(x)\n{\n\n\t \u0063ase 1:hashlistinit(p);break;\n\t \u0063ase 2:hashinputname(p);break;\n\t \u0063ase 3:hashshow2name(p);break;\n\t \u0063ase 4:hashinput(p);break;\n\t \u0063ase 5:hashshow(p);break;\n\t \u0063ase 6:v=0;break;\n\t \u0064efault:printf("\u8f93\u5165\u9519\u8bef\n");break;\n\t }\t\n\t}\n}\n
原文地址: https://www.cveoy.top/t/topic/ptWM 著作权归作者所有。请勿转载和采集!