Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab4_anis_saod.docx
Скачиваний:
2
Добавлен:
14.09.2019
Размер:
61.72 Кб
Скачать

Санкт-Петербургский Государственный

Университет телекоммуникаций

им. Бонч-Бруевича

Структуры и Алгоримты Обработки Данных

Отчет по лабораторной работе №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Элементы списка: ";

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