-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathassociativeTab.cpp
114 lines (93 loc) · 1.67 KB
/
associativeTab.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "associativeTab.h"
assocTab::~assocTab()
{
clear();
}
assocTab::node::node(const char* k)
{
next = NULL;
key = new char[strlen(k) + 1];
strcpy (key, k);
}
assocTab::node::node(const assocTab::node& element)
{
cout << "KONSTR KOPIUJACY " << endl;
if (element.key == NULL)
key = NULL;
else
{
key = new char[strlen(element.key) + 1];
strcpy (key, element.key);
}
value = element.value;
}
assocTab::node::~node()
{
delete []key;
}
void assocTab::insert(const char* key, int v)
{
node* nowy = new node(key);
nowy->next = head;
head = nowy;
nowy->value = v;
}
assocTab::node* assocTab::find(const char* key)
{
node* buf;
buf = head;
buf = find_buf(buf, key);
if(buf)
{
cout << "znaleziono klucz " << buf->key << " o wartosci " << buf->value << endl;
return buf;
}
else
{
return NULL;
}
}
void assocTab::displayAll()
{
node* buf;
buf = head;
while(buf)
{
cout << "Klucz: " << buf->key << " wartosc: " << buf->value << endl;
buf = buf->next;
}
}
void assocTab::clear()
{
node* buf;
while(head)
{
buf = head -> next;
delete head;
head = buf;
}
}
void assocTab::swap (assocTab& element)
{
node *t = head;
head = element.head;
element.head = t;
}
assocTab& assocTab::operator =(const assocTab& element)
{
if (&element == this)
return *this;
assocTab t (element);
swap (t);
return *this;
}
int& assocTab::operator [](const char* k)
{
node *c = find(k);
if (!c)
{
insert(k, 0);
c = head;
};
return c->value;
}