В C++, списки имеют разные реализации и можно оформить их с использованием различных структур данных. Ниже приведены два основных подхода к оформлению списка в C++: с использованием связанного списка и стандартного контейнера std::list
.
1. Связанный список:
Связанный список в C++ представляет собой структуру данных, в которой каждый элемент содержит указатель на следующий элемент списка. Пример оформления связанного списка в C++ выглядит следующим образом:
#include <iostream> // определение структуры узла списка struct Node { int data; // данные текущего элемента Node* next; // указатель на следующий элемент }; class LinkedList { private: Node* head; // указатель на начало списка public: LinkedList() { head = nullptr; // инициализируем пустой список } // метод для добавления элемента в конец списка void add(int data) { Node* newNode = new Node; // создаем новый узел списка newNode->data = data; newNode->next = nullptr; if (head == nullptr) { head = newNode; } else { Node* temp = head; while (temp->next != nullptr) { temp = temp->next; } temp->next = newNode; } } // метод для вывода списка на экран void display() { Node* temp = head; while (temp != nullptr) { std::cout << temp->data << " "; temp = temp->next; } std::cout << std::endl; } }; int main() { LinkedList list; list.add(1); list.add(2); list.add(3); list.display(); // выводит: 1 2 3 return 0; }
2. std::list
:
std::list
- это стандартный контейнер в библиотеке STL (Standard Template Library) C++, который представляет собой двусвязный список. Пример оформления списка с использованием std::list
выглядит следующим образом:
#include <iostream> #include <list> int main() { std::list<int> myList; // создаем пустой список типа int // добавляем элементы в список myList.push_back(1); myList.push_back(2); myList.push_back(3); // выводим список на экран for (const auto& element : myList) { std::cout << element << " "; } std::cout << std::endl; // выводит: 1 2 3 return 0; }
Оба подхода имеют свои преимущества и недостатки, и выбор между ними зависит от конкретной задачи и требований к списку. Связанный список может быть полезен в ситуациях, когда требуется частые вставки и удаления элементов в середине списка. std::list
, с другой стороны, предлагает более обширный интерфейс и встроенные методы для работы со списком.