Санкт-Петербургский Государственный
Университет телекоммуникаций
им. Бонч-Бруевича
Структуры и Алгоримты Обработки Данных
Отчет по лабораторной работе №3
«Алгоритм поиска в тексте»
Выполнил:
Анисимов А.А.
гр. ИСиТ-91
Проверил:
Антонов В.В.
Санкт-Петербург
2012г.
Лабораторная работа № 4
Стандартная библиотека шаблонов
Цель: Разработка программы использующей АТД реализованные в библиотеке шаблонов
Задание: Написать программу на языке С++ реализующей операции над следующими типами данных: list - линейный список <list.h>, stack - стек <stack.h>, queue - очередь <queue.h>
Cвязный список — структура данных, состоящая из узлов, каждый из которых содержит как собственно данные, так и одну или две ссылки («связки») на следующий и/или предыдущий узел списка. Принципиальным преимуществом перед массивом является структурная гибкость: порядок элементов связного списка может не совпадать с порядком расположения элементов данных в памяти компьютера, а порядок обхода списка всегда явно задаётся его внутренними связями.
Односвязный список (Однонаправленный связный список)
Здесь ссылка в каждом узле указывает на следующий узел в списке. В односвязном списке можно передвигаться только в сторону конца списка. Узнать адрес предыдущего элемента, опираясь на содержимое текущего узла, невозможно.
Двусвязный список (Двунаправленный связный список)
Здесь ссылки в каждом узле указывают на предыдущий и на последующий узел в списке. По двусвязному списку можно передвигаться в любом направлении — как к началу, так и к концу. В этом списке проще производить удаление и перестановку элементов, так как всегда известны адреса тех элементов списка, указатели которых направлены на изменяемый элемент.
Основные функции для работы со списками в С++:
list <тип данных> lst;
lst.begin() – итератор на первом элементе
lst.end() – итератор на последнем элементе
lst.empty() – проверка на пустоту списка
lst.size() – размер списка
lst.front() – первый элемент списка
lst.back() – последний элемент списка
lst.push_front() – вставка элемента в начало списка
lst.pop_front() – удаление первого элемента списка
lst.push_back() – вставка элемента в конец списка
lst.pop_back() – удаление последнего элемента списка
lst.insert() – вставка элементов
lst.swap() – обмен содержанием между двумя списками
lst.clear() – очистка списка
lst.remove() – удаление элемента с определенным значением
lst.remove_if() – удаление элементов, подходящих под определенные условия
lst.unique () – удаление повторяющихся элементов
lst.sort() – сортировка элементов списка
lst.reverse() – обратный порядок элементов в списке
#include <iostream>
#include <list>
#include <cstdlib>
using namespace std;
int menu ();
int main () {
setlocale (LC_ALL, "Russian");
list <int> lst;
int num, i, element;
short br=0;
while (br!=1) {
short key = menu();
switch (key) {
case 1: cout << "\nВведите количество элементов, которое требуется добавить: ";
cin >> num;
cout << "Введите элементы: ";
for (i=0; i<num; i++) {
cin >> element;
lst.push_back(element);
}
cout << "\n\n";
system("pause");
system("cls");
break;
case 2: cout << "\nЭлементы списка: ";