Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная 3_Лебедев.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
41.03 Кб
Скачать

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

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина) (СПбГЭТУ)

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

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

Отчет

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

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

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

Выполнил: студент группы №2306

Лебедев С. И.

Проверила: к. т. н., доцент

Сискович Т. И.

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

2013 г.

Цель работы

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

Задание

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

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

Состав списка задается программистом. Пользователь вводит информационные поля списка. Элементы списка можно сортировать в алфавитном порядке по полю «Фамилия»

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

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

typedef struct swimmers

{

char name[20]; //Имя пловца

char surname[20]; //Фамилия

int dist; //Дистанция

char country[20]; //Страна

struct swimmers *next; //Поле указатель на следующий элемент

struct swimmers *prev; //Поле указатель на предыдущий элемент

}NT;

Использование оператора typedef для приведения нового типа: NT.

Пример объявления указателя типа NT: NT *spisok=NULL.

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

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

Таблица 1. Сортировка в алфавитном порядке по фамилии

. алфавитном порядке по фамилии

К

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

Данные после обработки

Имя

Фамилия

Дистанция

Страна

Имя

Фамилия

Дистанция

Страна

1

Paul

Biederman

200

Germany

Yanick

Agnel

200

France

2

Yanick

Agnel

200

France

Paul

Biederman

200

Germany

3

Ian

Thorpe

800

Australia

Ian

Thorpe

800

Australia

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

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

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

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

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

Назначение

c,fl1,fl2

int

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

c

char

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

popitka,spisok

NT*

Указатели

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

Шаг 1: Начало программы

Шаг 2: Вывод меню

Шаг 3: Вывод сообщения «Выберите пункт меню»

Шаг 4:Ввод номера пункта. Пункт 1 – переход к шагу 5, пункт 2-переход к шагу 6, пункт 3-переход к шагу 7, пункт 4-переход к шагу 8, пункт 5-переход к шагу 9.

Шаг 5: Заполнение полей списка. Возврат к шагу 4.

Шаг 6: Вывод исходного списка в виде таблицы. Возврат к шагу 4.

Шаг 7: Сортировка списка по алфавиту. Формирование нового списка. Возврат к шагу 4.

Шаг 8: Вывод нового списка в виде таблицы, если новый список не сформирован, то вывод сообщения. Возврат к шагу 4.

Шаг 9: Завершение программы.

9. Описание функций

9.1. Описание функции f_vvod

Назначение

Используется для заполнения данных электронной картотеки.

Прототип

NT* f_vvod(NT* spisok)

, где NT*-указатель на объект типа NT, NT*-тип вовращаемого значения.

Пример вызова

spisok=f_vvod(popitka);

Описание переменных

Описание локальных переменных приведено в таблице 5.

Таблица 5. Описание локальных переменных функции razm

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

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

Назначение

r

NT*

Переменная для ввода данных полей структуры

y

char

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

d

char

Используется для ввода данных

i

int

Используется для ввода данных

9.2. Описание функции vivod

Назначение

Используется для вывода списка.

Прототип

void vivod(NT* lst)

, где параметр NT* - указатель на объект параметра NT;

Пример вызова

vivod(spisok)

; где spisok- указатель на начало списка.

Описание переменных

Описание локальных переменных приведено в таблице 6.

Таблица 6. Описание локальных переменных функции vivod

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

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

Назначение

r

NT*

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