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爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

          国产日韩综合一区二区性色av| 欧美日韩精品一区二区| 一本久久综合| 久久午夜av| 国产视频一区二区在线观看| 亚洲日本久久| 欧美大片免费观看| 伊人伊人伊人久久| 久久久久欧美| 合欧美一区二区三区| 欧美一区二区成人| 国产精品美女诱惑| 亚洲视频在线一区| 欧美日韩中字| 亚洲一级片在线观看| 欧美日韩在线亚洲一区蜜芽| 亚洲精品一区二区在线| 欧美顶级少妇做爰| 亚洲啪啪91| 欧美区一区二| 99精品视频免费全部在线| 欧美极品一区| 一本色道久久加勒比88综合| 欧美日韩成人在线| 亚洲一二三级电影| 国产精品视频一区二区三区 | 在线观看欧美一区| 久久婷婷国产综合国色天香| 亚洲高清视频中文字幕| 欧美电影在线观看| 日韩视频免费大全中文字幕| 欧美偷拍另类| 欧美一区二区三区免费视频| 国内一区二区在线视频观看| 欧美mv日韩mv国产网站app| 亚洲美女中文字幕| 国产精品福利网| 久久国产精品久久w女人spa| 在线看片一区| 欧美另类在线播放| 羞羞色国产精品| 亚洲电影免费在线| 国产精品国产三级国产专播精品人 | 亚洲一级二级| 国产一区久久| 欧美成人黄色小视频| 洋洋av久久久久久久一区| 国产乱子伦一区二区三区国色天香 | 久久色在线播放| 夜夜嗨av一区二区三区四区| 国产精品一区二区在线| 免费在线欧美视频| 亚洲欧美成人一区二区三区| 狠狠噜噜久久| 欧美亚洲不卡| 免费h精品视频在线播放| 亚洲午夜激情网页| 亚洲成人原创| 欧美日韩综合在线| 老司机成人网| 欧美夜福利tv在线| 亚洲美女福利视频网站| 国内揄拍国内精品少妇国语| 欧美理论视频| 久久综合九色综合欧美就去吻 | 中文在线资源观看网站视频免费不卡 | 性xx色xx综合久久久xx| 亚洲精品一区二区三区婷婷月 | 你懂的视频欧美| 性感少妇一区| 亚洲婷婷在线| 日韩午夜免费| 91久久午夜| 影音先锋久久久| 国产精品一区一区| 欧美日韩视频在线观看一区二区三区 | 午夜欧美精品| 亚洲一本视频| 亚洲网站视频| 一区二区不卡在线视频 午夜欧美不卡在| 激情久久久久久久| 国产日韩欧美中文| 国产精品视频免费一区| 欧美亚一区二区| 欧美丝袜一区二区三区| 欧美激情亚洲| 欧美精选在线| 欧美黑人在线播放| 欧美国产综合| 女人香蕉久久**毛片精品| 久久久久久亚洲精品中文字幕| 亚洲欧美一区二区精品久久久| 在线亚洲免费视频| 一本不卡影院| 亚洲视频香蕉人妖| 一区二区欧美日韩| 一区二区三区欧美| 在线一区二区视频| 亚洲天天影视| 亚洲自拍偷拍色片视频| 亚洲一区国产精品| 性欧美超级视频| 亚洲欧美在线aaa| 欧美尤物一区| 欧美一区二区在线看| 久久成人免费日本黄色| 久久九九精品| 美女主播视频一区| 欧美精品网站| 国产精品大片| 国产一区二区三区成人欧美日韩在线观看| 国产夜色精品一区二区av| 国产亚洲精品久久久| 狠狠色2019综合网| 亚洲激情自拍| 亚洲午夜小视频| 久久se精品一区精品二区| 久久久水蜜桃av免费网站| 欧美国产日韩xxxxx| 欧美三级视频| 国内伊人久久久久久网站视频| 亚洲国产91精品在线观看| 一本色道久久加勒比精品| 午夜精品久久久久久久男人的天堂| 久久电影一区| 欧美激情一区二区三区蜜桃视频| 欧美日韩综合网| 黄色成人小视频| 99精品国产99久久久久久福利| 亚洲综合日韩中文字幕v在线| 久久久久久穴| 欧美日韩在线观看视频| 国产一区二区精品久久| 最新成人av网站| 性亚洲最疯狂xxxx高清| 欧美国产精品日韩| 国产亚洲精品久久飘花| 亚洲最快最全在线视频| 久久久午夜电影| 国产精品国产三级国产专播精品人 | 欧美大片一区| 国产亚洲综合精品| 亚洲视频精选| 免费看成人av| 国产午夜亚洲精品羞羞网站| 亚洲精品在线视频观看| 久久久精品免费视频| 欧美视频在线观看| 在线精品视频一区二区| 亚洲欧美日韩视频一区| 欧美日韩国产成人在线| 黄网站色欧美视频| 亚洲小说欧美另类婷婷| 欧美成人一区二区三区片免费| 国产日产欧产精品推荐色| 亚洲视频网站在线观看| 免费看亚洲片| 红杏aⅴ成人免费视频| 亚洲影院免费观看| 欧美日韩在线免费| 亚洲国产精品福利| 久久九九精品| 国产日本欧洲亚洲| 亚洲欧美日韩一区在线观看| 欧美另类69精品久久久久9999| 揄拍成人国产精品视频| 久久久99久久精品女同性| 国产精品视频免费观看www| 亚洲午夜91| 欧美日韩国产va另类| 亚洲激情综合| 男同欧美伦乱| 亚洲高清在线观看| 久久在线免费| 亚洲国产欧美国产综合一区 | 国产欧美日韩视频在线观看 | 欧美日韩极品在线观看一区| 亚洲国产欧美久久| 免费不卡中文字幕视频| 在线欧美影院| 另类亚洲自拍| 亚洲黄色一区| 欧美激情精品久久久久久蜜臀| 亚洲国产精品国自产拍av秋霞| 久久躁日日躁aaaaxxxx| 亚洲成色精品| 欧美高清在线一区二区| 亚洲日本欧美| 欧美日韩一区二区免费视频| 夜夜爽av福利精品导航 | 国产主播一区| 狂野欧美激情性xxxx| 亚洲国产日韩一区| 欧美精品一区二区三区很污很色的 | 在线观看福利一区| 欧美69视频| 在线亚洲+欧美+日本专区| 国产精品美女主播| 欧美在线一区二区三区| 狠狠色丁香婷婷综合|