Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
130273_03FB1_shpory_po_obektno_orientirovannomu....doc
Скачиваний:
45
Добавлен:
24.12.2018
Размер:
650.24 Кб
Скачать
  1. Абстрактный список, операции над списками в классе List

Данные абстрактного типа. Для связанных списков мы установили основное свойство узла – хранить ссылку на адрес соседнего узла, определили операцию движения по списку и операции вставки и удаления узлов. При этом мы совершенно не интересуемся конкретной реализацией указанных свойств.

Объекты информатики, определенные данным образом, носят название «Данные абстрактного типа». Этих свойств достаточно для формирования псевдокода решения задачи. Метод реализации данных абстрактного типа разрабатывают позже - на этапе кодирования, в зависимости от реализованного псевдокода.

Контейнер список (list) организует хранение объектов в виде двусвязного списка. Каждый элемент списка содержит три поля: значение элемента, указатель на предшествующий и указатель на последующий элементы списка. Вставка и удаление работают эффективно для любой позиции элемента в списке. Однако список не поддерживает произвольного доступа к своим элементам: например, для выборки n-го элемента нужно последовательно выбрать предыдущие n-1 элементов.

  1. Использование в С++ методов класса List – пример.

Контейнер список (list) организует хранение объектов в виде двусвязного списка. Каждый элемент списка содержит три поля: значение элемента, указатель на предшествующий и указатель на последующий элементы списка. Вставка и удаление работают эффективно для любой позиции элемента в списке. Однако список не поддерживает произвольного доступа к своим элементам: например, для выборки n-го элемента нужно последовательно выбрать предыдущие n-1 элементов.

Приведем пример применения шаблонного класса для создания связанного списка

#include <list>

#include <iostream>

#include <string>

using namespace std;

int main()

{

list<string> groceryList; // Создаем пустой список

list<string>::iterator i = groceryList.begin();

i = groceryList.insert(i, "apple");

i = groceryList.insert(i, "bread");

i = groceryList.insert(i, "juice");

cout << "The quantity of list elements is : "

<< groceryList.size() << endl;

cout << "List elements:" << endl;

i = groceryList.begin();

while (i != groceryList.end())

{

cout << *i << endl;

++i;

}//Конец оператора while

while(!groceryList.empty())//Уничтожение списка

{

i = groceryList.begin();

groceryList.erase(i);

}//Конец оператора while

i = groceryList.begin();//Повторное создание списка

groceryList.insert(i, "apple");

groceryList.insert(i, "bread");

groceryList.insert(i, "juice");

cout << "The quantity of list elements is : "

<< groceryList.size() << endl;

cout << "List elements:" << endl;

i = groceryList.begin();

while (i != groceryList.end())

{

cout << *i << endl;

++i;

}//Конец оператора while

return 0;

}// Конец функции main

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]