Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Комментарии по коду программы:
В строках 4 — 10 мы создаем структуру. Чтобы ее объявить используем зарезервированное слово struct и даем ей любое, желательно логичное, имя. В нашем случае — building. С правилами именования переменных, вы можете ознакомиться в этой статье. Далее открываем фигурную скобку {, перечисляем 4 элемента структуры через точку с запятой;, закрываем фигурную скобку } и в завершении ставим точку с запятой;. Это будет нашим шаблоном (формой) структуры. В строке 16 объявляем объект структуры. Как и для обычных переменных, необходимо объявить тип данных. В этом качестве выступит имя нашей созданной структуры — building. Как же заполнить данными (инициализировать) элементы структуры? Синтаксис таков: Имя объекта далее оператор точка. и имя элемента структуры. Например: apartment1.owner. Таким образом, в строках 18-21 присваиваем данные элементам структуры. И так, данные мы внесли. Следующий вопрос: «Как к ним обратиться, как работать и использовать их в программе?» Ответ — «Очень просто — так же, как и при инициализации, используя точку. и имя элемента структуры». В строках 23 — 26 выводим заполненные элементы структуры на экран. И вот что мы увидим в результате, когда скомпилируем нашу программу:
Что ещё важно знать:
Инициализировать структуру можно и таким способом: building apartment1 = {"Денис", "Симферополь", 5, 150000};
но так делают крайне редко; · Структуру можно вкладывать в другие структуры (это мы рассмотрим в следующем примере). Дополним предыдущий пример, чтобы увидеть дополнительные возможности работы со структурами.
Коментарии по коду программы: Строка 17 — создание объекта built типа date в определении структуры building. Строки 42 — 43: создаем указатель на структуру struct building *pApartment; и далее присваиваем ему адрес уже созданного и заполненного данными объекта pApartment = &apartment1;. Обращаясь к элементам структуры через указатель мы используем оператор -> (тире и знак >). Это видно в строках 47 — 51. В строке 62 показано, как можно инициализировать структуру. А именно, можно создать новый объект структуры и присвоить ему одним целым, уже созданный и заполненный данными, объект. В функцию show() передаем объект структуры, как параметр — строка 64. Результат:
Разобрав этот пример, мы увидели на практике следующее:
В дополнение ко всему, следует отметить, что функции могут так же возвращать структуры в результате своей работы. Например:
Списки Линейный список — это динамическая структура данных, каждый элемент которой посредством указателя связывается со следующим элементом. Из определения следует, что каждый элемент списка содержит поле данных (Data) (оно может иметь сложную структуру) и поле ссылки на следующий элемент (next). Поле ссылки последнего элемента должно содержать пустой указатель (NULL). Так как ссылка всего одна (только на следующий элемент), то такой список является односвязным. Когда говорят о линейном списке, то, как правило, подразумевают именно односвязный список. Пример. Сформировать список, содержащий целые числа 3, 5, 1, 9. Решение. При работе с динамическими структурами данных можно рекомендовать следующий порядок действий. а) Прежде всего необходимо определить две структуры: 1. структура, содержащая характеристики данных, то есть все те поля с данными, которые необходимы для решения поставленной задачи (в нашем случае имеется всего одно поле целого типа). Назовём эту структуру Data; 2. структура, содержащая поле типа Data и поле — адрес последующего элемента next. Вторую структуру назовём List. Тексты этих структур необходимо расположить в начале программы (до main() и других функций). Вот возможная реализация структур: Struct Data { int a; }; Struct List { Data d; List *next; }; Такой подход позволит в дальнейшем изменять в широких пределах структуру с собственно данными, никак не затрагивая при этом основную структуру List. Итак, мы описали структурный тип, с помощью которого можно создать наш односвязный список. Графически создаваемый список можно изобразить так, как это показано на рисунке ниже:
б) В программе (обычно в функции main()) определяем указатель на начало будущего списка: List *u = NULL; Пока список пуст, и указатель явно задан равным константе NULL. в) Выполняем первоначальное заполнение списка. Создадим первый элемент: u = new List; // Выделяем память под элемент списка u->d.a = 3; // Заполняем поля с данными // (здесь это всего одно поле) u->next = NULL;// Указатель на следующий элемент пуст После включения первого элемента список можно изобразить так: List *x; x = u; // Сейчас последний элемент списка совпадает с его началом Выделяем место в памяти для следующего элемента списка и перенаправляем указатель x на выделенную область памяти:
x->next = new List; x = x->next; Затем определяем значение этого элемента списка: x->d.a = 5; x->next = NULL; Получилась такая схема:
|
|||||||||||||
Последнее изменение этой страницы: 2021-04-20; просмотров: 56; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.248.208 (0.021 с.) |