| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖
标题:求大神看看我的散列表为什么不能存进去数据。。。按联系人姓名为关键字建立 ...
只看楼主 加入收藏
北北hz
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-12-6
收藏
 问题点数:0 回复次数:0 
求大神看看我的散列表为什么不能存进去数据。。。按联系人姓名为关键字建立散列表。。。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 20//规定最多只能存20个用户
typedef struct number
{
    int pnum;//电话号码
    char name[20];//用户名
    char address[30];//地址
    int flag;
}tel;
int hash(int x)
{
    int y;
    y=x % 19;//对19取余就是0-19.刚好有20个数。
    return y;
}

main()
{
    tel t[M];
    int n,i,j,x,w;
    tel a[M];  //散列表
    char s[20];

    printf("\n请输入联系人个数:");
    scanf("%d",&n);

    for(i=0;i<M;i++)//初始化a数组。
    {
        a[i].flag=0;
    }
    for(i=0;i<n;i++)
    {
        printf("请输入第%d个人的用户名:",i+1);
        scanf("%s",t[i].name);
        x=t[i].name[0];       //将用户名首字母转换成ASCLL码
        x=abs(x);
        w=hash(x);         //将用户名首字母的ASCLL码作为关键字放入散列表
        printf("请输入第%d个人的电话号码:",i+1);
        scanf("%d",&t[i].pnum);
        printf("请输入第%d个人的地址:",i+1);
        scanf("%s",t[i].address);

        printf("%d\n",x);
        printf("%d\n",w);

        //建立散列表
        if(a[w].flag==0)
        {
               strcpy(a[w].name,t[i].name);
            a[w].pnum=t[i].pnum;
            strcpy(a[w].address,t[i].address);
            a[w].flag=1;
        }
        else if(a[w].flag!=0)
        {
            for(j=1;j<=3;j++)
            {
                if(a[w+j].flag==0)
                {
                    strcpy(a[w+j].name,t[i].name);
                    a[w+j].pnum=t[i].pnum;
                    strcpy(a[w+j].address,t[i].address);
                    a[w+j].flag=1;
                    break;
                }
                else if(j==3)//当探索3次之后都不为空时。提示溢出
                    printf("%s溢出无法插入!!!\n",t[i].name);
            }
        }
    }
    //列出散列表
    for(i=0;i<M;i++)
    {
        printf("%d  ",i);
    }
    printf("\n");
    for(i=0;i<M;i++)
    {
        printf("%s",a[i].name);
    }
}
搜索更多相关主题的帖子: 联系人 关键字 number 姓名 
2014-12-06 15:43
快速回复:求大神看看我的散列表为什么不能存进去数据。。。按联系人姓名为关键字 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037433 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved