Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iterator>
- #include <memory>
- using namespace std;
- struct Node {
- int data;
- Node * prev;
- Node * next;
- Node() {
- }
- };
- class List_iterator {
- private:
- Node * it;
- public:
- List_iterator(Node * input) {
- it = input;
- }
- int operator*() {
- return it->data;
- }
- List_iterator& operator++() {
- it = it->next;
- return *this;
- }
- List_iterator& operator--() {
- it = it->prev;
- return *this;
- }
- };
- class List {
- private:
- Node * first;
- Node * last;
- size_t list_size;
- public:
- List() {
- auto fisrt = new Node;
- last = first;
- list_size = 0;
- }
- ~List() {
- /*while (first) {
- last = first->next;
- delete first;
- first = last;
- }*/
- }
- size_t size() {
- return list_size;
- }
- void push_back(int elem) {
- Node * tmp = new Node;
- if (first) {
- std::cout << "wtf";
- }
- /*last->data = elem;
- last->next = tmp;
- tmp->prev = last;
- tmp->next = nullptr;
- last = tmp;
- list_size += 1;*/
- }
- void push_front(int elem) {
- Node * tmp = new Node;
- tmp->data = elem;
- tmp->prev = nullptr;
- if (first != nullptr) {
- tmp->next = first;
- first->prev = tmp;
- first = tmp;
- }
- else {
- tmp->next = last;
- first = tmp;
- last->prev = tmp;
- }
- list_size += 1;
- }
- int pop_back() {
- if (first != nullptr) {
- int result = (last->prev)->data;
- Node * tmp = last->prev->prev;
- tmp->next = last;
- delete last->prev;
- last->prev = tmp;
- list_size -= 1;
- return result;
- }
- }
- int pop_front() {
- if (first != nullptr) {
- int result = first->data;
- Node * tmp = first->next;
- tmp->prev = nullptr;
- delete first;
- first = tmp;
- return result;
- list_size -= 1;
- }
- }
- List_iterator begin() {
- return List_iterator(first);
- }
- List_iterator end() {
- return List_iterator(last);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement