Skip to content

Commit b6bcb38

Browse files
author
Zhenchao Gan
authored
Create deque.cpp
1 parent b1e7f68 commit b6bcb38

File tree

1 file changed

+68
-0
lines changed
  • C10-Elementary-Data-Structures/exercise_code

1 file changed

+68
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#include<cassert>
2+
#include<iostream>
3+
#include<vector>
4+
5+
using namespace std;
6+
7+
class Deque {
8+
9+
private:
10+
vector<int> data_;
11+
int size_;
12+
int head_;
13+
int tail_;
14+
int capacity_;
15+
16+
public:
17+
18+
Deque(int size) : size_(0), head_(0), tail_(size-1), capacity_(size), data_(size, 0) {}
19+
20+
void push_front(int v) {
21+
assert(head_ <= tail_);
22+
data_[head_++] = v;
23+
size_++;
24+
}
25+
26+
void push_back(int v) {
27+
assert(head_ <= tail_);
28+
data_[tail_--] = v;
29+
size_++;
30+
}
31+
32+
void pop_front() {
33+
assert(head_ > 0);
34+
head_--;
35+
size_--;
36+
}
37+
38+
void pop_back() {
39+
assert(tail_ < capacity_);
40+
tail_++;
41+
size_--;
42+
}
43+
44+
int front() const {
45+
assert(head_ > 0);
46+
return data_[head_-1];
47+
}
48+
49+
int back() const {
50+
assert(tail_ < capacity_-1);
51+
return data_[tail_+1];
52+
}
53+
54+
int size() const { return size_; }
55+
56+
int empty() const { return size_ == 0; }
57+
58+
59+
~Deque() {}
60+
};
61+
62+
int main() {
63+
Deque mydeque(3);
64+
mydeque.push_front(1);
65+
mydeque.push_back(3);
66+
cout << mydeque.front() << " " << mydeque.back() << endl;
67+
cout << mydeque.size();
68+
}

0 commit comments

Comments
 (0)