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

Федеральное государственное бюджетное образовательное учреждение высшего

профессионального образования

«Санкт-Петербургский государственный электротехнический

университет «ЛЭТИ» им. В.И.Ульянова (Ленина)»

Факультет компьютерных технологий и информатики

Кафедра вычислительной техники

Отчет

по лабораторной работе № 2

на тему «Односвязные списки»

по дисциплине «Программирование»

Выполнил:

Проверила: к.т.н., доцент Сискович Т.И.

Санкт-Петербург

2013 г.

Цель работы

Получение практических навыков в работе с односвязными списками.

Задание

Написать программу для выполнения типовых действий с односвязными списками: добавление элементов в список, вывод информационных полей на экран, удаление элементов списка, обработка списка, сортировка элементов списка.

Уточнение задания

Состав списка и структуры, которая является одним из полей списка, задается программистом. Пользователь вводит информационные поля списка. Условия для обработки – элементы списка, в которых значение поля «goals» поля «info» больше значения, заданного пользователем. Так же возможна сортировка исходного списка, заключающаяся в распределении элементов списка в порядке возрастания или убывания значений одного из полей «goals” или “age” поля «info». Поле для сортировки и тип сортировки выбирает пользователь.

Возможно добавление элемента в уже существующий список и удаление элемента из списка. Место, в которое нужно добавить выбирает пользователь (в начало, в конец, после заданного), элемент, который нужно удалить так же выбирает пользователь.

Описание списка и структуры приведено в следующем пункте.

Описание структуры

Шаблон:

structfootball

{

char*name; // Имя, фамилия футболиста

int age; // Возраст футболиста

int goals; // Кол-во голов

};

где первое поле типа char* - адрес первой буквы имени, фамилии футболиста, второе поле типаint– возраст футболиста, третье поле типаint– количество забитых за всю карьеру голов.

Имя структуры: football.

Имя нового типа: NT.

Пример объявления переменной типа NT: NT *players=NULL.

Описание списка

Шаблон:

structlist

{

NT info;

struct list *next;

}SP;

где первое поле – данные типа NT, второе поле указатель типа struct list *.

Имя структуры, задающей список: list.

Пример объявления переменной-указателя типа SP: SP *h1=NULL.

Контрольные примеры

Контрольные примеры обработки приведены в таблице 1 «Контрольные примеры обработки».

Таблица 1. Контрольные примеры обработки

№ п.п.

Исходные данные

Условие обработки

Результат

Имя

Возраст

Кол-во голов

Имя

Возраст

Кол-во голов

1

Ronaldo

28

390

>300

Ronaldo

28

390

Messi

25

341

Messi

25

341

 Fàbregas

25

80

2

Ronaldo

28

390

>350

Ronaldo

28

390

Messi

25

341

Zidan

40

140

Контрольные примеры сортировки по полю goalsприведены в таблице 2 «Контрольные примеры сортировки».

Таблица 2. Контрольные примеры сортировки

№ п.п.

Исходные данные

Тип сортировки

Результат

Имя

Возраст

Кол-во голов

Имя

Возраст

Кол-во голов

1

Ronaldo

28

390

По возрастанию

 Fàbregas

25

80

Messi

25

341

Messi

25

341

 Fàbregas

25

80

Ronaldo

28

390

2

Ronaldo

28

390

По убыванию

Ronaldo

28

390

Messi

25

341

Messi

25

341

Zidan

40

140

Zidan

40

140

Описание переменных главной функции

Описание переменных главной функции приведено в таблице 3.

Таблица 3. Описание переменных главной функции

Имя переменной

Тип переменной

Назначение

k, q, z

int

Вспомогательные переменные

pm, pm2

int

Переменные для выбора пунктов меню

c, ch

char

Переменные, управляющие циклом

h1, rez

SP *

Указатели

Краткое описание алгоритма

При разработке алгоритма предусмотрен контроль над выполнением пунктов меню.

1) Пользователь выбирает один из пунктов меню: 1 – ввод данных; 2 – вывод данных; 3 – обработка; 4 – добавление элемента; 5 – удаление элемента ; 6 – сортировка; 7 – вывод информационных полей элемента слева и справа от заданного; 0 - выход.

2) Если пользователь выбирает первый пункт меню, выполняется:

2.1) ввод имени, переход к пункту 2.2;

2.2) ввод возраста, переход к пункту 2.3;

2.3) ввод количества голов, переход к пункту 2.4;

2.4) вывод сообщения «Завершить ввод?(n/y)».

2.5) если сh==n, переход к пункту 2.1; если сh!=n, переход к пункту 1.

3) Если пользователь выбирает второй пункт меню, вывод данных переход к пункту 1.

4) Если пользователь выбирает третий пункт меню, выполняется обработка по заданному пользователем условию, переход к пункту 1.

5) Если выбран четвертый пункт меню, выполняется добавление элемента в список.

6) Если выбран 5 пункт, выполняется удаление элемента из списка.

7) Если выбран 6 пункт меню, выполняется сортировка элементов списка, переход к пункту 1.

8) Если выбран 7 пункт меню, завершение программы.

9) Если не выбран ни одни из 2-8 пунктов, вывод сообщения «Ошибка, выберете пункт меню снова».

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