Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class List {
- public:
- void push_front(const int& value) {
- if (size_ == 0) {
- last_ = head_ = new Node{ value, nullptr, nullptr };
- size_++;
- return;
- }
- Node* temp = new Node{ value, head_, nullptr };
- head_->prev = temp;
- head_ = temp;
- size_++;
- }
- void pop_front() {
- if (size_ > 0) {
- if (size_ == 1) {
- delete head_;
- last_ = head_ = nullptr;
- size_--;
- return;
- }
- Node* temp = head_;
- head_ = head_->next;
- delete temp;
- head_->prev = nullptr;
- size_--;
- }
- }
- void print() {
- Node* temp = head_;
- while (temp != nullptr) {
- cout << temp->value << " ";
- temp = temp->next;
- }
- cout << endl;
- }
- int size() const {
- return size_;
- }
- private:
- struct Node { // двусвязный список состоит из узлов
- int value; // узел хранит информативную часть
- Node* next; // указатель на следующий узел в списке
- Node* prev; // указатель на предыдущий узел
- };
- int size_ = 0;
- Node* head_ = nullptr;
- Node* last_ = nullptr;
- };
- int main() {
- List list1;
- for (int i = 0; i < 10; i++) {
- list1.push_front(i + 1);
- }
- list1.print();
- cout << list1.size() << endl;
- for (int i = 0; i < 3; i++) {
- list1.pop_front();
- }
- list1.print();
- cout << list1.size() << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement