1 struct Rec{
2 int key;
3 int value;
4 };
5
6 class LRUCache{
7 private:
8 Rec * buffer;
9 int size;
10 int curSize;
11 public:
12 LRUCache(int capacity) {
13 size = capacity;
14 buffer = new Rec[size];
15 curSize = 0;
16 }
17 ~LRUCache(){
18 if (size > 0)
19 delete[] buffer;
20 }
21 int get(int key) {
22 int index=-1;
23 for (int i = 0; i < curSize; i++){
24 if (buffer[i].key == key){
25 index = i;
26 break;
27 }
28 }
29 if (index == -1)
30 return -1;
31 Rec tmp = buffer[index];
32 for (int i = index - 1; i >= 0; i--)
33 buffer[i + 1] = buffer[i];
34 buffer[0] = tmp;
35 return tmp.value;
36 }
37 void set(int key, int value) {
38 if (size <= 0)
39 return;
40 int index = -1;
41 for (int i = 0; i < curSize; i++){
42 if (buffer[i].key == key){
43 buffer[i].value = value;
44 index = i;
45 break;
46 }
47 }
48 if (index == -1){
49 Rec record; record.key = key; record.value = value;
50 if (curSize < size){
51 buffer[curSize++] = record;
52 }
53 else buffer[size - 1] = record;
54 index = curSize - 1;
55 }
56 Rec tmp = buffer[index];
57 for (int i = index - 1; i >= 0; i--)
58 buffer[i + 1] = buffer[i];
59 buffer[0] = tmp;
60 }
61 };