数据结构实验:哈希表

本文介绍了一次数据结构实验,通过哈希表寻找一组数据中出现次数最多的数字。实验过程中遇到了超时和数组越界问题,通过调整映射关系和初始化结构体数组解决了问题。
摘要由CSDN通过智能技术生成

think:
1哈希表的建立需要注意映射关系的合理选择,自己开始时候将线性映射关系选择为10000,然后提交就一直超时,而且自己犯得错误很多,题目中说了如果有多个结果,输出数字最小的那个,自己昨晚没有注意,提交wrong answer,今天注意到之后又因为知识掌握不扎实,先是超时错误,又因为盲目修改数组大小,导致数组越界,其实哈希表的建立就像是一种大集合中小集合的模块化,结构体链表数组的很好使用,自己还有就是考虑如果是多组输入,那么如何将结构体数组指针初始化,一直还没想到解决方法,刚刚问了问鑫哥,可以重新用一个for循环将指针数组中的每个指针置空,或者用一个for循环重新为指针数组中的每个指针申请新的空间

数据结构实验:哈希表
Time Limit: 1000MS Memory Limit: 65536KB

Problem Description
在n个数中,找出出现次数最多那个数字,并且输出出现的次数。如果有多个结果,输出数字最小的那一个。

Input
单组数据,第一行数字n(1<=n<=100000)。
接下来有n个数字,每个数字不超过100000000

Output
出现次数最多的数字和次数。

Example Input
3
1 1 2

Example Output
1 2

Hint

Author
cz

以下为accepted代码

#include <stdio.h>
#include <stdlib.h>
#define N 100
long long book[100004];
struct node
{
    int Data;
    struct node *next;
};
struct node *a[1000004];

void Inserst(long long n)
{
    long long x = n/N;
    struct node *p = (struct node *)malloc(sizeof(struct node));
    p->Data = n;
    p->next = a[x];
    a[x] = p;
}

int  Find(long long n)
{
    int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值