В статье рассматривает создание односвязного списка, добавление, удаление, поиск элемента по ключу. Приведенные в работе программы протестированы в среде Borland C++ 5.02. Программы предназначены для начинающих программистов студентов и школьников.
Ключевые слова
УКАЗАТЕЛЬ, ПОИСК, УДАЛЕНИЕ, ДОБАВЛЕНИЕ, СПИСОК, КЛЮЧ
Текст научной работы
С++ — один из самых распространенных языков программирования [1, 2]. Он широко используется студентами при выполнении выпускных квалификационных и курсовых работ. С++ с успехом применяется при выполнении численных расчетов по научным задачам [3, 4].
Любая программа для компьютера предназначена для обработки данных. Данные бывают статические и динамические. В статье рассматривает создание односвязного списка, добавление, удаление, поиск элемента по ключу. Приведенные в работе программы протестированы в среде Borland C++ 5.02. Программы предназначены для начинающих программистов студентов и школьников.
Они могут быть использованы при выполнении лабораторных, контрольных и курсовых работ.
Линейное программирование
Если до начала работы с данными сложно определить, какой объем памяти потребуется для хранения, то память выделяется по мере необходимости отдельными блоками, связанными друг с другом с помощью указателей. Этот способ организации данных называется динамическими структурами данных. Размер динамических структур изменяется во время выполнения программы. Основные динамические структуры — это линейные списки, стеки, очереди и бинарные деревья. Эти структуры различаются способами связи отдельных элементов, а также допустимыми операциями.
Вид динамической структуры определяется в зависимости от требуемых действий с ними. Например, если в процессе работы программы нужно многократно упорядочить массив данных, содержащий много данных, имеет смысл хранить его в виде линейного списка. В случае, когда требуется быстрый поиск элемента массива, то данные лучше всего доставить в виде бинарного дерева.
Независимо от вида элемент динамической структуры данных должен иметь минимум два поля: одно поле для хранения данных, а другое для хранения указателя. Как полей для данных, так и полей для указателей может быть несколько. Поле данных может иметь любой основной или составной тип, а также может быть указателем. Рассмотрим описание типа простого элемента динамической структуры данных. Общий вид:
struct ; *;>;
Первое поле структуры — поле данных, а второе поле — указатель.
Пример описания элемента динамической структуры данных, хранящей фамилию, имя, отчество и год рождения.
struct spisokchar fam[200]; // поле данныхchar name[200]; // поле данныхchar fname[200]; // поле данных nt year; // поле данныхspisok *next; / поле указатель на следующий элемент>;
Самая простая динамическая структура данных — это линейный список. В этом случае каждый элемент имеет ссылку на следующий элемент. Такой список называется односвязным или однонаправленным.
Если добавить в каждый элемент динамической структуры вторую ссылку, указывающий на предыдущий элемент, то получится двусвязный список (двунаправленный). Когда указатель последнего элемента будет указывать на первый элемент, то получается кольцевой список.
Линейная функция и ее график. 7 класс.
Каждый элемент динамического списка имеет ключ, определяющий этот элемент. Ключ может быть целым числом или строкой. Ключ является частью поля данных. В процессе работы с динамической структурой в качестве ключа могут выступать разные части поля данных. Например, в предыдущем примере список можно упорядочить по алфавиту. В качестве ключа будут использованы поля fam, name, fname.
Ключи разных элементов списка могут совпадать.
Над односвязнымb списками можно выполнять следующие операции:
- начальное формирование списка (создание первого элемента);
- добавление элемента в конец списка;
- чтение элемента с заданным ключом;
- вставка элемента в заданное место списка (до или после элемента с заданным ключом);
- удаление элемента с заданным ключом;
- упорядочивание списка по ключу.
Рассмотрим каждую операцию отдельно на примере создания динамической структуры данных для хранения списка группы студентов (ф.и.о., дата рождения (день, месяц, год)).
Начальное формирование списка.
#include #include #include #include // описание типа структураstruct spisok char fam[200]; unsigned int d,m,y;spisok *next; >;int main () spisok *first=new spisok;//указатель first всегда будет указывать на 1-й элемент спискаcoutfam);coutcin>> first ->d>> first ->m>> first ->y;first ->next=0;getch(); return 0; >
Добавление элемента в конец списка.
spisok *t,*z;// описываем дополнительные указателиt=first;while(t->next!=0)t=t->next;// находим конец спискаz=new spisok;coutfam);coutcin>> z->d>> z->m>> z->y;z->next=0;// ввели новый элемент// указатель z указывает на новый элементt->next=z;// указателю последнего элемента присваиваем адрес нового элемента// выводим элементы списка на экранt=first;int j=1;while(t!=0)cout<famdmyt=t->next; >
Чтение элемента с заданным ключом.
Пусть ключом является год рождения.
unsigned int key;coutcin>>key;t=first;coutwhile(t->next!=0)if (key==t->y) famdm<<«.»y>t=t->next;>
Удаление элемента с заданным ключом. Удаление элемента из списка зависит от того, где находится элемент: в начале списка, в середине или в конце. Для удаления элемента из списка введем фамилию имя отчество.
coutt=first;j=1;while(t!=0)cout<famdmyt=t->next; >// Выводим исходный списокchar key_fam[20];coutgets(key_fam);while (strcmp(key_fam,first->fam)==0)next;>// удаление первого элемента списка, если ф.и.о. совпадаетt=first; z=t;while(t!=0)if (strcmp(key_fam,t->fam)==0)next=t->next;>else t=t->next;>coutt=first;j=1;while(t!=0)cout<famdmyt=t->next; >
Сортировка связанного списка по ключу заключается только в изменении связей между элементами.
Работа с функциями пользователя в языке программирования С++
- Хусаинов И.Г.
Создание электронного учебного пособия по системам счисления
- Хусаинов И.Г.
Сравнение языков программирования на примере сортировки массива
- Хусаинов И.Г.
Релаксация давления в сферической полости, окруженной насыщенной газом пористой средой, после взрыва
- Хусаинов И.Г.
Акустическое воздействие на призабойную зону пласта
- Хусаинов И.Г.
Список литературы
- Подбельский В.В. Язык С++: Учебное пособие – 5 изд. – М: Финансы и статистика, 2004. – 560 c.
- Шилдт Г. С++: базовый курс. 3-е издание. – М.: Издательский дом «Вильямс». 2010. – 624 с.
- Хусаинов И.Г. Тепловые процессы при акустическом воздействии на насыщенную жидкостью пористую среду // Вестник Башкирского университета. 2013. Т. 18. № 2. С. 350-353.
- Хусаинова Г.Я. Нестационарная фильтрация вязкопластичной жидкости в пласте // Автоматизация. Современные технологии. 2018. Т. 72. № 4. – С. 147-149.
Цитировать
Хусаинов, И.Г. Программирование линейных списков / И.Г. Хусаинов. — Текст : электронный // NovaInfo, 2018. — № 90. — С. 55-58. — URL: https://novainfo.ru/article/15738 (дата обращения: 05.07.2023).
Поделиться
Настоящий ресурс содержит материалы 16+
Источник: novainfo.ru
Поиск презентаций
Алгоритмизация и программирование Зозулина Любовь Сергеевна, учитель информатики МОУ «СОШ 3» г. Первоуральск.
Презентация: Алгоритмизация и программирование Зозулина Любовь Сергеевна, учитель информатики МОУ «СОШ 3» г. Первоуральск.
. Виды алгоритмических конструкций ЛИНЕЙНАЯ ЛИНЕЙНАЯ ЛИНЕЙНАЯ ВЕТВЛЕНИЕ ВЕТВЛЕНИЕ ВЕТВЛЕНИЕ ЦИКЛ . программирования QBasic На языке программирования QBasic На языке программирования QBasic . функции Далее Программы с линейными алгоритмами (продолжение). .
LOGO Решение задач линейного программирования в MS Excel.
Презентация: LOGO Решение задач линейного программирования в MS Excel.
LOGO Решение задач линейного программирования в MS Excel Общая задача линейного программирования решается симплексным методом . симплексный алгоритм, считается основоположником методов линейного программирования Леонид Витальевич Канторович (1912-1986 .
Применение линейного программирования в математических моделях (с) Н.М. Светлов, 2007 1/ 23 Лекция 3. Применение линейного программирования в математических.
Презентация: Применение линейного программирования в математических моделях (с) Н. . 1/ 23 Лекция 3. Применение линейного программирования в математических.
. линейного программирования Экономические приложения линейного программирования 5. Программное обеспечение линейного программирования Программное обеспечение линейного программирования Программное обеспечение линейного программирования Применение линейного .
Для представления алгоритма в виде, понятном компьютеру, служат языки программирования. Сначала разрабатывается алгоритм действий, а потом он записывается.
Презентация: . виде, понятном компьютеру, служат языки программирования. Сначала разрабатывается алгоритм действий, а .
. программистов начали создаваться языки программирования высокого уровня, формальные языки . (линейную, ветвление, цикл). Одним из первых процедурных языков программирования был . структура «выбор» Введение в программирование Структура «выбор» Структура IF. .
Воротницкий Ю.И. Исследование операций. 2.Сетевые и транспортные модели. Целочисленное программирование.
Презентация: Воротницкий Ю.И. Исследование операций. 2.Сетевые и транспортные модели. Целочисленное программирование.
. быть сформулирована как классическая задача линейного программирования (причем – целочисленного). Если . линейное программирование. 4.1. Постановка задач. Целочисленное линейное программирование ориентировано на решение задач линейного программирования .
Язык программирования QBasic Учебное пособие для изучения программирования в QBasic Разработала учитель информатики МОУ СОШ 6 г. Усть-Лабинска Румбешт.
. Учебное пособие для изучения программирования в QBasic Разработала учитель информатики .
. Вывести Y Линейный алгоритм Линейная структура программы Введение в программирование Линейная структура программы Программа . имеет линейную структуру, если все .
Линейное программирование Основная задача линейного программирования.
Линейное программирование Основная задача линейного программирования.
Линейное программирование Основная задача линейного программирования Стандартная форма Первая стандартная форма задачи линейного программирования имеет вид Первая .
. линейных дискретных задач; Булевые задачи линейного программирования. Булевые задачи линейного программирования. Дискретное программирование Стохастическое программирование раздел математического программирования .
Тема « Линейное программирование » Задачей линейного программирования называется задача исследования операций, математическая модель которой имеет вид.
Тема « Линейное программирование » Задачей линейного программирования называется задача исследования операций, математическая .
. в канонической форме. Тема « Линейное программирование » Каноническая задача линейного программирования имеет вид : Z(X . решения. Тема « Линейное программирование » Опорным решением задачи линейного программирования называется такое допустимое решение .
Экономические приложения выпуклого программирования: числовые модели Содержание лекции: Градиентные методы решения задач выпуклого программирования Градиентные.
Экономические приложения выпуклого программирования: числовые модели Содержание лекции: Градиентные .
. математического программирования После замены функций z(x) и q(x) кусочно-линейными . функциями: задачи выпуклого программирования можно решать с помощью .
1 Тема 3. Математическое программирование в экономике.
1 Тема 3. Математическое программирование в экономике.
. методы линейного программирования; методы целочисленного программирования; методы нелинейного программирования; методы динамического программирования; методы стохастического программирования; методы .
Решим в MS Excel задачу линейного программирования 1 1 2 2.
Решим в MS Excel задачу линейного программирования 1 1 2 2.
. Решим в MS Excel задачу линейного программирования 2. Введем формулу вычисления . Решим в MS Excel задачу линейного программирования Укажем ограничения 5) Неотрицательность . в MS Excel задачу линейного программирования Осталось нажать кнопку Выполнить .
Оптимизация. Содержание Целочисленная оптимизация Нелинейное программирование Примеры оптимизационных задач Постановка задачи линейного программирования.
Оптимизация. Содержание Целочисленная оптимизация Нелинейное программирование Примеры оптимизационных задач Постановка задачи линейного программирования.
. изучаются в разделе линейного программирования. Постановка задачи линейного программирования Классическая проблема линейного программирования, называемая задачей о .
Воротницкий Ю.И. Исследование операций. 2.Сетевые и транспортные модели. Целочисленное программирование.
Воротницкий Ю.И. Исследование операций. 2.Сетевые и транспортные модели. Целочисленное программирование.
. быть сформулирована как классическая задача линейного программирования (причем – целочисленного). Если . линейное программирование. 4.1. Постановка задач. Целочисленное линейное программирование ориентировано на решение задач линейного программирования .
Линейное программирование Математика-наука о математических моделях.
Линейное программирование Математика-наука о математических моделях.
. на неизвестные наложены линейные ограничения Программирование = Пл анирование Линейное программирование -это Наука о . которой на неизвестные наложены линейные ограничения Программирование = Планирование Линейное программирование- это Набор неотрицательных .
МБОУ СОШ 18 имени Э.Д. Потапова Функции в языке программирования QBasic МБОУ СОШ 18 имени Э.Д. Потапова Функции в языке программирования QBasic Арифметические,
. .Д. Потапова Функции в языке программирования QBasic МБОУ СОШ 18 имени . .Д. Потапова Функции в языке программирования QBasic Арифметические,
. структуры (линейную, ветвление, цикл). Одним из первых процедурных языков программирования был известный . END Линейная Линейная структура программы Введение в программирование Линейная структура программы Программа имеет линейную структуру .
Задачи линейного программирования Лекция 3. Линейное программирование Методы линейного программирования используют в прогнозных расчетах, при планировании.
Задачи линейного программирования Лекция 3. Линейное программирование Методы линейного программирования используют в прогнозных расчетах, при .
Задачи линейного программирования Лекция 3 Линейное программирование Методы линейного программирования используют в прогнозных расчетах, . ограничениям Общая задача линейного программирования. Опр.1. Общей задачей линейного программирования называется задача, .
Кафедра математики и моделирования Старший преподаватель Е.Г. Гусев Курс «Высшая математика» Лекция 16. Тема: Линейное программирование. Цель: Ознакомиться.
. «Высшая математика» Лекция 16. Тема: Линейное программирование. Цель: Ознакомиться.
. как линейное программирование нелинейное программирование динамическое программирование теория игр. Линейное программирование. Разработка моделей линейного программирования. Разработка моделей линейного программирования включает .
ТЕМА 2. Статическая оптимизация 2.1. Общая постановка задачи математического программирования 2.2. Задача линейного программирования и методы ее решения.
. постановка задачи математического программирования 2.2. Задача линейного программирования и методы ее решения .
. формулировка задачи линейного программирования Линейное программирование Линейное программирование – область математического программирования, изучающая методы . задачи представлены линейными выражениями. Запись задачи линейного программирования Целевая .
алгоритм решения оптимизационной задачи л инейного программирования путём перебора вершин выпуклого многогранника в многомерном пространстве.оптимизационнойл.
. решения оптимизационной задачи л инейного программирования путём перебора вершин выпуклого многогранника .
. при заданных линейных ограничениях.линейного программирования линейный функционал Заметим, что каждое из линейных неравенств на . задачи Алгоритм Рассмотрим следующую задачу линейного программирования:линейного программирования Теперь поставим эту задачу в .
Источник: www.myshared.ru
Составление программы линейной структуры
Компилируемый статически
типизированный язык программирования
общего назначения
Совместим с языком C
Но не C99
Поддержка разных парадигм
Процедурное, объектно-ориентированное,
обобщенное, функциональное,
метапрограммирование
3.
/*
Программа, выводящая строку «Hello, world!»
в стандартный поток вывода */
комментарий
#include
подключает стандартную
библиотеку языка С++. Это подключение необходимо для работы функции system.
Содержимое третьей строки — using namespace std; указывает на то, что мы используем
по умолчанию пространство имен с названием «std».
void main()
определение функции main()
что находится внутри фигурных скобок функции int main() <> будет автоматически выполняться
после запуска программы.
// Вывод в стандартный поток вывода
std::cout говорит программе
выводить сообщение с текстом «Hello, world» на экран
Оператор cout предназначен для вывода текста на экран командной строки. После него ставятся
две угловые кавычки ( <<). Далее идет текст, который должен выводиться. Он помещается
в двойные кавычки. Оператор endl переводит строку на уровень ниже.
>
4.
5.
Числовые константы
Целые числа и числа с плавающей запятой
Логические константы
true и false
Символьные константы
Строковые константы
Документация
6.
Десятичные
12345, -34021
999999L, 99983UL
Шестнадцатеричные
0xFeedBeef, 0x328aadb
Восьмеричные
003, 0723
Вещественные
1.35, 8.45f
2e+10f, -3.835e-6L
7.
Логическая константа true служит для
обозначения логического значения
«Истина», а константа false – значения
«Ложь»
8.
9.
Записывается в виде символа, обрамленного
одиночными кавычками
‘A’, ‘1’
Значение символьной константы – числовой код
символа из набора символов на данной машине
Некоторые символы записываются в виде escapeпоследовательностей, начинающихся с символа
»’, ‘