Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define FILL_FACTOR 75
- struct Item{
- string key;
- int value;
- };
- struct Hashmap{
- Item* element{};
- int capacity;
- int count = 0;
- long hash(string key) const{
- long sum = 0;
- for (int i = 0; i < key.size(); ++i) {
- sum += key[i] * (i + 1);
- }
- return sum;
- }
- void init(int size){
- this->element = (Item*)malloc(size * sizeof(Item));
- }
- void put(const string& key, int value){
- long hashed = hash(key);
- if(this->element[hashed].key == key){
- this->element[hashed].value = value;
- }else if(!this->element[hashed].key.empty()){
- long temp = hashed + 1;
- while(!this->element[temp].key.empty()){
- temp++;
- }
- this->element[temp].key = key;
- this->element[temp].value = value;
- }else{
- this->element[hashed].key = key;
- this->element[hashed].value = value;
- }
- this->count++;
- }
- int get(string key) const{
- long hashed = hash(key);
- if(this->element[hashed].key == key){
- return this->element[hashed].value;
- }else{
- for(int i = hashed + 1; i < count; i++){
- if(i == count - 1){
- for(int j = 0; j < hashed; j++){
- if(this->element[j].key == key) return this->element[j].value;
- }
- break;
- }
- if(this->element[i].key == key) return this->element[i].value;
- }
- return -1;
- }
- }
- int delete_key(string key){
- int hashed = hash(key);
- if(this->element[hashed].key.empty()){
- return -1;
- }
- int val = this->element[hashed].value;
- this->element[hashed].key = "";
- this->element[hashed].value = 0;
- this->capacity--;
- return val;
- }
- };
- int main(){
- Hashmap hashmap;
- int n;
- cin >> n;
- hashmap.init(n);
- while(n--){
- string request;
- cin >> request;
- if(request == "get" || request == "delete"){
- string key;
- cin >> key;
- int ans;
- if(request == "get"){
- ans = hashmap.get(key);
- }else{
- ans = hashmap.delete_key(key);
- }
- if(ans == -1){
- cout << "None\n";
- }else{
- cout << ans << '\n';
- }
- }else if(request == "put"){
- string key;
- int value;
- cin >> key >> value;
- hashmap.put(key, value);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement