99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

合肥生活安徽新聞合肥交通合肥房產(chǎn)生活服務(wù)合肥教育合肥招聘合肥旅游文化藝術(shù)合肥美食合肥地圖合肥社保合肥醫(yī)院企業(yè)服務(wù)合肥法律

CSE2425代寫(xiě)、C++編程語(yǔ)言代做
CSE2425代寫(xiě)、C++編程語(yǔ)言代做

時(shí)間:2024-12-09  來(lái)源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯(cuò)



CSE2425, C programming lab, course 2020-2021
Final assignment: Hash map
1 Introduction
In this final assignment you will implement a hash map
1
. A hash map is a data
structure that associates a key with a value (a chunk of data). Most hash maps
are implemented as an array of so-called buckets. A hash function translates
a given key (e.g., a name) to an index in the array, where the corresponding
bucket is stored.
Below we will specify the data structures that you have to provide, and the
functions that you have to implement. This assignment includes two bonus
functions that can raise your score from pass (C) to good (B) to excellent (A).
2 Testing
The first part of the assignment consist of implementing a test set for the hash
map. We have created a number of incorrect hash map implementations. The
goal is to create a test set on which these incorrect implementations fail. When
you have finished creating this test set, you can use this test set to test your own
implementation by copy&pasting it into the my tests of the Hashmap assignment
in Weblab.
3 Hash map structure
Define a type HashMap, which represents the hash map data structure.
Note: Use typedef such that a HashMap structure can be used without using
the struct keyword, i.e. the following construction should be possible:
HashMap *hm;
4 Creating a hash map
1. Implement a function create_hashmap that returns a pointer to the newly
constructed HashMap structure and has parameter
ˆ key_space, a size_t
2
that represents the number of buckets in the hash
map.
1http://en.wikipedia.org/wiki/Hashmap
2http://en.wikipedia.org/wiki/Size_t
1CSE2425, C programming lab, course 2020-2021
This function should allocate enough memory to fit key_space buckets, and the
allocated memory should be zeroed (i.e., NULLed).
2. A hash function maps a string (i.e. an array of chars ending with a null
character) to an index, so it returns a unsigned int. The parameter of a hash
function is simply a
ˆ key, a null-terminated string of characters.
As the hash map can only hold up to key_space buckets, using the hash function
–for example to lookup a mapping– requires some care; apply modulo key_space
to the result such that the value will be in the available bucket range.
3. A default hash function named hash should be implemented. This function
should sum all ASCII values of the characters of the key.
For example:
char *key = "AC";
unsigned int h = hash(key);
=> h = 1**
5 Inserting data
Implement a function insert_data that has parameters
ˆ hm, a pointer to a hash map;
ˆ key, a null-terminated string of characters;
ˆ data, a void pointer to the source data;
ˆ resolve_collision, a ResolveCollisionCallback (see below).
The function should store the data pointer and a copy of the key in the bucket
that can be found by applying the hash function on the key. In case of a
collision, i.e. when there already is data with the same key in the hash map, the
resolve_collision function should be called with the the previously stored
data and data as arguments and the returned void pointer should be stored in
the bucket instead.
ResolveCollisionCallback, a pointer to a function that returns a void pointer
and has two parameters:
ˆ old_data, a void pointer to the previously stored data;
ˆ new_data, a void pointer to the data that is being newly inserted.
The function should determine what data is stored in the has map in case of a
key collision by returning the void pointer to the data that is to be stored.
2CSE2425, C programming lab, course 2020-2021
6 Retrieving data
Implement a function get_data that has parameters
ˆ hm, a pointer to a hash map;
ˆ key, a null-terminated string of characters.
The function should return the data pointer (a void pointer) in the hash map
that is associated with the key. If the key is not present in the hash map, NULL
should be returned.
7 Iterator
Implement a function iterate that has parameters
ˆ hm, a pointer to a hash map;
ˆ callback, a pointer to a function that returns nothing (i.e. void) and has
two parameters:
– key, a null-terminated string of characters;
– data, a void pointer to the data.
This function should iterate over the entire hash map. For each data element
it finds, the callback function should be called with the two members of the
element.
8 Removing data
Implement a function remove_data that has parameters
ˆ hm, a pointer to a hash map;
ˆ key, a null-terminated string of characters.
ˆ destroy_data, a DestroyDataCallback (see below).
This function should remove the element in the hash map that is associated with
the given key. If the destroy_data parameter is non-NULL it should be called
with the data pointer of the element as argument. If the key is not present, the
hash map should remain untouched. As the remove_data function cannot fail,
its return type is void.
DestroyDataCallback, a pointer to to a function that returns nothing (i.e.
void) and has one parameter:
ˆ data, a void pointer.
The function should clean up the data (e.g. free allocated memory).
3CSE2425, C programming lab, course 2020-2021
9 Deleting a hash map
Implement a function delete_hashmap that has parameters
ˆ hm, a pointer to the hash map that is to be deleted;
ˆ destroy_data, a DestroyDataCallback (see 8).
The function should deallocate all memory that was allocated by the hash map.
If the destroy_data parameter is non-NULL it should be called for every data
element that is stored in the hash map with the data pointer of the element as
argument.
10 Bonus: New hash function
Implement a function set_hash_function that has parameters
ˆ hm, a pointer to a hash map;
ˆ hash_function, a pointer to a hash function that returns a unsigned int
and a single parameter:
– key, a null-terminated string of characters.
This function should set hash_function as the new hash function of the hash
map hm. Changing the hash function means that a particular key may now be
hashed to different bucket than it was with the previous hash function. The
hash map must be updated (rehashed) to reflect this so that all data in the
hash map can still be retrieved with their corresponding keys.
11 Bonus: Counting Words
Implement a function count_words that has parameters
ˆ stream, a pointer to a FILE.
This function should count the number of times each word in the stream occurs
using the hash map you implemented. A word is defined as a sequence of one or
more alphanumeric characters (case sensitive). You may use fscanf
3
to read a
particular set of characters from a stream but other solutions are also accepted.
The data stored in the hash map should be properly allocated and deallocated,
do not simply store an integer that is cast to a pointer type. The return type
of the function is void.
3http://en.cppreference.com/w/c/io/fscanf
4CSE2425, C programming lab, course 2020-2021
Given the input:
foo bar_, foo!
bar "baz".
foo?
The program should write the following to the standard output:
bar: 2
baz: 1
foo: 3
The order in which the output is printed is not important.
12 Submission
The assignment should be implemented on Weblab.
ˆ All test code should be located in the Testing assignment.
ˆ All hash map code should be located in the Hashmap assignment.
ˆ Put all the word count source code inside the Wordcount assignment;
ˆ If you have implemented the first bonus exercise, add the following macro
to your Hashamp submission:
#define NEW_HASH
ˆ Do not include a main function. (We will use our own test driver, just like
the example test provided.)
Submissions violating the above requirements will be automatically rejected by
the Weblab system.


請(qǐng)加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp

掃一掃在手機(jī)打開(kāi)當(dāng)前頁(yè)
  • 上一篇:COMP42215代做、代寫(xiě)Python設(shè)計(jì)程序
  • 下一篇:CS-350代寫(xiě)、C++編程語(yǔ)言代做
  • 無(wú)相關(guān)信息
    合肥生活資訊

    合肥圖文信息
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
    出評(píng) 開(kāi)團(tuán)工具
    出評(píng) 開(kāi)團(tuán)工具
    挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
    挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
    海信羅馬假日洗衣機(jī)亮相AWE  復(fù)古美學(xué)與現(xiàn)代科技完美結(jié)合
    海信羅馬假日洗衣機(jī)亮相AWE 復(fù)古美學(xué)與現(xiàn)代
    合肥機(jī)場(chǎng)巴士4號(hào)線(xiàn)
    合肥機(jī)場(chǎng)巴士4號(hào)線(xiàn)
    合肥機(jī)場(chǎng)巴士3號(hào)線(xiàn)
    合肥機(jī)場(chǎng)巴士3號(hào)線(xiàn)
    合肥機(jī)場(chǎng)巴士2號(hào)線(xiàn)
    合肥機(jī)場(chǎng)巴士2號(hào)線(xiàn)
    合肥機(jī)場(chǎng)巴士1號(hào)線(xiàn)
    合肥機(jī)場(chǎng)巴士1號(hào)線(xiàn)
  • 短信驗(yàn)證碼 豆包 幣安下載 AI生圖 目錄網(wǎng)

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網(wǎng) 版權(quán)所有
    ICP備06013414號(hào)-3 公安備 42010502001045

    99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

          9000px;">

                综合av第一页| 爽爽淫人综合网网站| 亚洲欧洲成人精品av97| 成人一区二区三区中文字幕| 男女男精品网站| 午夜精品久久久久久不卡8050| 亚洲一区二区在线视频| 中文字幕不卡的av| 国产欧美一区二区精品忘忧草| 2021久久国产精品不只是精品| 欧美日韩在线电影| 91精品国产综合久久婷婷香蕉 | 精品在线观看视频| 国产精品888| 3d成人动漫网站| 欧美大黄免费观看| 亚洲三级在线免费观看| 午夜影院久久久| 99精品国产91久久久久久| 在线不卡欧美精品一区二区三区| 久久精品欧美日韩| 国产精品麻豆视频| 亚洲成人一二三| 99re这里只有精品首页| 337p亚洲精品色噜噜| 久久久另类综合| 五月激情六月综合| 91亚洲永久精品| 国产色91在线| 日韩avvvv在线播放| 成人av网址在线| 精品少妇一区二区三区日产乱码 | 国产精品一区专区| 日韩一级视频免费观看在线| 亚洲免费在线视频一区 二区| 国产不卡视频一区| 日韩一级大片在线观看| 亚洲女人小视频在线观看| www.欧美色图| 国产精品国模大尺度视频| 极品销魂美女一区二区三区| 欧美日韩日日夜夜| 五月天欧美精品| 91精品婷婷国产综合久久| 调教+趴+乳夹+国产+精品| 97精品电影院| 一区二区在线观看免费视频播放| 99精品久久久久久| 日韩一区欧美一区| 色婷婷一区二区| 综合久久久久综合| 欧美制服丝袜第一页| 亚洲成人午夜影院| 制服丝袜av成人在线看| 亚洲影视在线观看| 欧美精品v国产精品v日韩精品 | 欧美韩国一区二区| 色哟哟在线观看一区二区三区| 亚洲天堂免费在线观看视频| 国产一区二三区好的| 久久久.com| 91免费版pro下载短视频| 亚洲丝袜制服诱惑| 欧美一区二区视频在线观看2022 | 亚洲天堂精品在线观看| 欧美色图在线观看| 奇米影视一区二区三区| 欧美videofree性高清杂交| 国产资源精品在线观看| 国产精品私人影院| 日韩一区二区视频| 国产精品亚洲专一区二区三区 | 欧美成人在线直播| 成人国产在线观看| 一区二区三区成人| 欧美成人vps| 91精品国产综合久久久久久久久久 | 成人动漫一区二区在线| 亚洲一区在线视频| 亚洲欧洲日韩av| 国产亚洲欧美日韩在线一区| 99久久婷婷国产| 风间由美一区二区三区在线观看| 亚洲va欧美va国产va天堂影院| 精品盗摄一区二区三区| 日韩电影在线一区二区三区| 国产女同互慰高潮91漫画| 久久精品一二三| 精品国产自在久精品国产| 日本电影欧美片| 在线免费av一区| 成人av免费在线观看| 国产不卡视频在线观看| 91蜜桃视频在线| 91国模大尺度私拍在线视频| 欧美视频你懂的| 日韩精品中文字幕一区| 欧美日韩国产中文| 欧美日韩国产美女| 欧美日韩在线播放三区| 日韩欧美国产高清| 久久品道一品道久久精品| 久久日韩粉嫩一区二区三区| 国产拍欧美日韩视频二区| 亚洲国产欧美日韩另类综合| 午夜精品在线看| 国产露脸91国语对白| 国产成人av一区二区三区在线 | 丝袜美腿亚洲综合| 激情五月婷婷综合| 99久久综合狠狠综合久久| 91丝袜国产在线播放| 宅男在线国产精品| 精品人在线二区三区| 精品国偷自产国产一区| 亚洲女同ⅹxx女同tv| 精品制服美女丁香| 欧美日本一区二区三区四区| 国产三级一区二区三区| 午夜精品一区二区三区电影天堂| 久久99国产精品麻豆| 国产精品香蕉一区二区三区| 欧美性感一区二区三区| 亚洲欧美国产77777| 国产成人亚洲综合a∨婷婷图片| 日本道精品一区二区三区| 中文字幕在线不卡| 成人免费视频一区| 亚洲视频每日更新| 色88888久久久久久影院按摩 | 一区二区三区欧美激情| www.66久久| 亚洲成人综合视频| 日韩美女在线视频| 成人h动漫精品| 亚洲成人av福利| 在线综合视频播放| 国内精品久久久久影院一蜜桃| 国产欧美久久久精品影院| 热久久一区二区| 中文字幕不卡一区| 欧美久久久久免费| 97久久精品人人澡人人爽| 九九视频精品免费| 亚洲国产精品久久久男人的天堂| 色综合久久66| 国产盗摄精品一区二区三区在线| 国产色爱av资源综合区| 欧美亚洲国产怡红院影院| 香蕉久久一区二区不卡无毒影院 | 中文字幕免费观看一区| 欧美美女一区二区| 欧美中文字幕一区| 欧美午夜精品免费| 欧美日韩综合不卡| 欧美日韩成人激情| 日韩三级电影网址| 精品999在线播放| 欧美xxxxxxxx| 精品嫩草影院久久| 精品理论电影在线| 久久久青草青青国产亚洲免观| 精品国产一区二区三区不卡| 精品日韩欧美在线| 国产欧美日韩三区| 亚洲品质自拍视频网站| 亚洲国产综合在线| 麻豆一区二区99久久久久| 久久精品国产99久久6| 精品一区二区久久| 99久精品国产| 日韩免费观看高清完整版在线观看| 91精品国产综合久久久久久久 | 风间由美一区二区三区在线观看| 精品亚洲成av人在线观看| 高清不卡一区二区在线| 欧美日韩一区二区不卡| 欧美一区二区三区视频免费播放| 久久久久久久国产精品影院| 国产精品美女久久久久久久久 | 欧美国产综合一区二区| 亚洲欧美影音先锋| 国产乱国产乱300精品| 91精品国产入口| 亚洲国产va精品久久久不卡综合| 成熟亚洲日本毛茸茸凸凹| 欧美一区午夜视频在线观看| 国产精品动漫网站| 久久爱www久久做| 欧美一区二区不卡视频| 亚洲黄色片在线观看| 亚洲精品福利视频网站| 激情欧美一区二区三区在线观看| 亚洲一区二区3| 国产精品乱人伦| 一区二区三区美女视频| 欧美在线视频你懂得| 久88久久88久久久| 一个色综合av| 亚洲国产精品精华液2区45|