#include <iostream> using namespace std; #include\"queue\" template <typename K,
ID: 3820003 • Letter: #
Question
#include <iostream>
using namespace std;
#include"queue"
template <typename K, typename V>
class AssociativeArray
{
struct Node
{
K key;
V value;
Node * next;
};
Node * firstnode,* lastnode;
int siz;
public:
AssociativeArray (){firstnode=0;lastnode=0;siz=0;}
AssociativeArray( const AssociativeArray&);
AssociativeArray<K,V> &operator=(const AssociativeArray<K,V>&);
~AssociativeArray();
int Size(){return siz;}
V operator[](const K&) const;//getter
V& operator[](const K&);//setter
bool containkey(const K&) const;
void deletekey(const K&);
queue<K> Keys()const;
void Clear();
};
template<typename V,typename K>
V operator[](const K& key1) const
{
int t=0;
for(Node*p=firstnode;p;p=p->next)
if(p->key==key1)
{t=1; return p->value;}
if(t==0)
{
V dummy;
return dummy;
}
}
template <typename V,typename K>
V& operator[](const K&key)
{
int t=0;
for(Node*p=firstnode;p;p=p->next)
if(p->key==key)
{t=1; return p->value;}
if(t==0)
{
++siz;
Node *temp =new Node;
temp->key=key;
temp->value=V();
temp->next=firstnode;
firstnode=temp;
return firstnode->value;
}
}
template<typename V,typename K>
bool containkey(const K&key) const
{
int t=0;
for(Node*p=firstnode;p;p=p->next)
if(p->key==key)
{t=1; return true;}
if(t==0)
{
return false;
}
}
template<typename V,typename K>
void deletekey(const K&key)
{
Node *p,prev;
for(p=firstnode, prev=0;p;prev=p,p=p->next)
if(p->key==key)
break;
if(p)
{
--siz;
if(prev)prev->next=p->next;
else firstnode=p->next;
delete p;
}
}
template<typename V,typename K>
queue<K> Keys()const
{
queue<K> ke;
for(Node*p=firstnode;p;p=p->next)
{
ke.push(p->key);
}
return ke;
}
will you correct this program's problem, thank you.
Explanation / Answer
#include <iostream>
#include<queue>
using namespace std;
class AssociativeArray
{
struct Node
{
K key;
V value;
Node * next;
};
Node * firstnode,* lastnode;
int siz;
public:
AssociativeArray (){firstnode=0;lastnode=0;siz=0;}
AssociativeArray( const AssociativeArray&);
AssociativeArray<K,V> &operator=(const AssociativeArray<K,V>&);
~AssociativeArray();
int Size(){return siz;}
V operator[](const K&) const;//getter
V& operator[](const K&);//setter
bool containkey(const K&) const;
void deletekey(const K&);
queue<K> Keys()const;
void Clear();
};
template<typename V,typename K>
V operator[](const K& key1) const
{
int t=0;
for(Node*p=firstnode;p;p=p->next)
if(p->key==key1)
{t=1; return p->value;}
if(t==0)
{
V dummy;
return dummy;
}
}
template <typename V,typename K>
V& operator[](const K&key)
{
int t=0;
for(Node*p=firstnode;p;p=p->next)
if(p->key==key)
{t=1; return p->value;}
if(t==0)
{
++siz;
Node *temp =new Node;
temp->key=key;
temp->value=V();
temp->next=firstnode;
firstnode=temp;
return firstnode->value;
}
}
template<typename V,typename K>
bool containkey(const K&key) const
{
int t=0;
for(Node*p=firstnode;p;p=p->next)
if(p->key==key)
{t=1; return true;}
if(t==0)
{
return false;
}
}
template<typename V,typename K>
void deletekey(const K&key)
{
Node *p,prev;
for(p=firstnode, prev=0;p;prev=p,p=p->next)
if(p->key==key)
break;
if(p)
{
--siz;
if(prev)prev->next=p->next;
else firstnode=p->next;
delete p;
}
}
template<typename V,typename K>
queue<K> Keys()const
{
queue<K> ke;
for(Node*p=firstnode;p;p=p->next)
{
ke.push(p->key);
}
return ke;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.