Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <string.h>
- using namespace std;
- template<class T, class E>
- class el{
- public:
- T first;
- E second;
- el<T,E> *nast;
- el<T,E> *poprz;
- };
- template<class T, class E>
- class MAPA{
- public:
- el<T,E> *pier;
- MAPA(){
- pier=NULL;
- }
- ~MAPA(){
- while (pier!=NULL){
- if (pier->nast != NULL){
- class el<T,E> *nowy=pier->nast;
- delete pier;
- pier = nowy;
- }
- else{
- delete pier;
- pier = NULL;
- }
- }
- }
- E & operator [](const T &o1){
- el<T,E> *w, *wp, *wn;
- for(w=pier, wp=0; w!=0; w=w->nast){
- if(w->first == o1) return w->second;
- wp=w;
- }
- wn=new el<T,E>;
- wn->first=o1;
- wn->nast=0;
- if(wp==0) pier=wn;
- else {
- wp->nast=wn;
- wn->poprz=wp;
- }
- return wn->second;
- }
- class iterator{
- public:
- el<T,E> *ws;
- int operator !=(const iterator &o1){
- if(ws!=o1.ws) return 1;
- return 0;
- }
- iterator & operator ++(int){
- ws=ws->nast;
- // return *ws;
- }
- el<T,E> * operator ->(void){
- return ws;
- }
- };
- iterator begin(void){
- iterator i1;
- i1.ws=pier;
- return i1;
- }
- iterator end(void){
- iterator i1;
- i1.ws=0;
- return i1;
- }
- void swap(el<T,E> *jeden, el<T,E> *dwa){
- el<T,E> *prev1_temp;
- prev1_temp=jeden.poprz;
- el<T,E> *next1_temp;
- next1_temp=jeden.nast;
- el<T,E> *prev2_temp;
- prev2_temp=dwa.poprz;
- el<T,E> *next2_temp;
- next2_temp=dwa.nast;
- if (prev1_temp){
- prev1_temp.nast=dwa;
- dwa.poprz=prev1_temp;
- }
- else dwa.poprz=NULL;
- if (next1_temp){
- next1_temp.poprz=dwa;
- dwa.nast=next1_temp;
- }
- else dwa.nast=NULL;
- if (prev2_temp){
- prev2_temp.nast=jeden;
- jeden.poprz=prev2_temp;
- }
- else jeden.poprz=NULL;
- if (next2_temp){
- next2_temp.poprz=jeden;
- jeden.nast=next2_temp;
- }
- else jeden.nast=NULL;
- }
- void sort_first(){
- for(el<T,E> *p=pier; p!=NULL; p=p->nast){
- for(el<T,E> *n=pier.nast; n!=NULL; n=n->nast){
- if (p->first < n->first) swap(p,n);
- }
- }
- }
- void sort_second(){
- for(el<T,E> *p=pier; p!=NULL; p=p->nast){
- for(el<T,E> *n=pier->nast; n!=NULL; n=n->nast){
- if (p->second < n->second) swap(p,n);
- }
- }
- }
- };
- int main(){
- MAPA<string, string> m;
- m["AA:"]="66";
- m["BB"]="656";
- m["CC"]="6634";
- string a;
- m.sort_second();
- a = m["AA:"];
- cout <<a <<endl;
- for(MAPA<string, string>:: iterator i=m.begin();i!=m.end();i++){
- cout <<i->first <<" " <<i->second <<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement