Исследование кольцевых структур
Изучение принципов и реализация алгоритмов создания и обработки кольцевых структур. Рассмотрение методов сортировки циклических списков. Разработка алгоритма создания и работы со структурой данных циклического типа. Проектирование структуры программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.12.2015 |
Размер файла | 254,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство сельского хозяйства Российской Федерации
ФГБОУ «КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ»
Кафедра компьютерных технологий и систем
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту
по дисциплине: Алгоритмы и структуры данных
на тему: Исследование кольцевых структур
Краснодар, 2014
Реферат
ЦИКЛИЧЕСКИЕ СПИСКИ, КОЛЬЦЕВЫЕ СТРУКТУРЫ.
Цель работы -- исследование кольцевых списков.
Задача работы:
- изучение циклических списков, кольцевых структур;
- создание программы с использованием среды Microsoft Visual Studio, язык программирования C#;
- отладка созданной программы;
Объект исследования -- структура данных: циклическая.
Предмет исследования -- кольцевой список.
Разработанная программа позволяет создавать кольцевой список.
Содержание
Введение
1. Описание предметной области
2. Технология разработки приложения
2.1 Алгоритм работы программы
2.2 Описание библиотечных функций
3. Результаты работы программы
4. Руководство пользователя
Заключение
Список использованной литературы
Приложение
Введение
Необходимым условием обучения предмету алгоритмы и структуры данных является наличие наглядного материала демонстрирующего основные принципы работы с данными различной структуры.
Целью данной работы были изучение принципов и реализация алгоритмов создания и обработки кольцевых структур.
В соответствии с целью работы были сформулированы следующие задачи:
1. Изучить методы сортировки циклических списков.
2. Провести исследование методов сортировки.
3. Разработать алгоритм создания и работы со структурой данных циклического типа.
4. Спроектировать структуру программного изделия.
5. Создать программный продукт.
6. Отладить и протестировать готовую программу.
В первой главе обосновывается актуальность задачи, формируется объект исследования, кратко обосновывается причина выбора в качестве средства программирования языка C#.
Во второй главе рассматриваются общие принципы кольцевой структуры, описывается алгоритм работы программы, используемые классы, функции. Рассматриваются наборы входных и выходных данных.
В третьей главе подробно описывается технология работы с программным продуктом, возможные ошибки и способы их устранения.
Данная программа позволяет дать наглядное представление внутреннего размещения в памяти циклической структуры данных.
Заключение содержит выводы по результатам работы, в нём описываются возможные способы использования программы.
алгоритм кольцевой структура программа
1. Описание предметной области
В настоящее время есть несколько видов различных структур данных: массивы, списки, очереди, деревья, стеки. Каждая из них имеет свои особенности, например, стеки имеют возможность обращения только к верхнему элементу, массивы позволяют обращаться к любому элементу по индексу, деревья представляют собой динамическую структуру данных, в которой заранее невозможно представить как она будет выглядеть, ясно лишь, что они имеют один узел, на который не ведёт ни одной ссылки - корень. Списки и очереди - близкие типы данных, однако если в списке последовательно проходя по элементам можно дойти до любого элемента и произвести над ним операции: чтения, удаления, вставить новый элемент, то в очереди возможно чтение и удаление только с головы, а добавление - в хвост.
Алгоритм циклической структуры - это алгоритм, в котором предусмотрено неоднократное выполнение одной и той же последовательности действий. На практике часто встречаются задачи, в которых одно или несколько действий бывает необходимо повторить несколько раз.
Многократное повторение последовательности действий называется циклом, а многократно повторяющиеся действия -телом цикла.
Изучение циклов демонстрирует учащимся главное преимущество компьютера перед человеком - выполнение большого числа действий за короткое время. Ведь даже весьма короткий циклический алгоритм, составить который не так уж долго, при исполнении может потребовать выполнения нескольких сотен действий, с которыми компьютер справится намного быстрее, чем человек.
Кольцевой буфер, или циклический буфер -- это структура данных, использующая единственный буфер фиксированного размера, как будто бы после последнего элемента сразу же снова идет первый. Такая структура легко предоставляет возможность буферизации потоков данных.
Кольцевой буфер находит очень широкое применение в том числе при программировании МК. Кольцевые буферы часто используют для организации различных очередей сообщений и буферов приёма-передачи различных коммуникационных интерфейсов. Популярность КБ обусловлена тем, что это один из самых простых и эффективных способов организовать FIFO(англ. first in -- first out, «первым пришёл -- первым вышел») без использования динамической памяти. Существует множество разновидностей КБ.
Кольцевой буфер создается пустым, с некоторой заранее определенной длиной. Например, это семиэлементный буфер:
Рисунок 1
Предположим, что в середину буфера записывается 1 (в кольцевом буфере точная начальная ячейка не имеет значения):
Рисунок 2
Затем предположим, что после единицы были добавлены ещё два элемента -- 2 и 3:
Рисунок 3
Если после этого два элемента должны быть удалены из буфера, то выбираются два наиболее старых элемента. В нашем случае удаляются элементы 1 и 2, в буфере остается только 3:
Рисунок 4
Если в буфере находится 7 элементов, то он заполнен:
Рисунок 5
Если продолжить запись в буфер, не принимая во внимание его заполненность, то новые данные начнут перезаписывать старые данные. В нашем случае, добавляя элементы A и B мы перезапишем 3 и 4:
Рисунок 6
В другом варианте реализации процедуры, обслуживающие буфер могут предотвратить перезапись данных и вернуть ошибку или выбросить исключение. Перезапись или её отсутствие оставляется на усмотрение обслуживающих процедур буфера или приложения, использующего кольцевой буфер.
Наконец, если теперь удалить из буфера два элемента, то удалены будут не 3 и 4, а 5 и 6, потому что A и B перезаписали элементы 3 и 4; буфер придет в состояние:
Рисунок 7
Кольцевой односвязный список получается из обычного односвязного списка путем присваивания указателю последнего элемента списка значения указателя начала списка (рис. 8).
Рисунок 8
Использование однонаправленных списков при решении ряда задач может вызвать определенные трудности. Дело в том, что по однонаправленному списку можно двигаться только в одном направлении, от заглавного звена к последнему звену списка. Между тем нередко возникает необходимость произвести какую-либо обработку элементов, предшествующих элементу с заданным свойством. Однако после нахождения элемента с этим свойством в односвязном списке у нас нет возможности получить достаточно удобный и быстрый доступ к предыдущим элементам. Для достижения этой цели придется усложнить алгоритм, что неудобно и нерационально.
Для устранения этого неудобства добавим в каждое звено списка еще одно поле, значением которого будет ссылка на предыдущее звено списка. Динамическая структура, состоящая из элементов такого типа, называется двунаправленным или двусвязным списком.
Двусвязный список характеризуется тем, что у любого элемента есть два указателя.
Один указывает на предыдущий (левый) элемент (L), другой указывает на последующий (правый) элемент (R).
Фактически двусвязный список это два односвязных списка с одинаковыми элементами, записанные в противоположной последовательности (рис 9).
Рисунок 9
Кольцевые двусвязные списки получают следующим образом: в качестве значения поля R последнего элемента принимают ссылку на первый элемент, а в качестве значения поля L первого элемента - ссылку на последний элемент (рис. 10).
Рисунок 10
2. Технология разработки приложения
2.1 Алгоритм работы программы
Алгоритм работы программы наглядно представлен в виде блок схемы (рис. 11)
Размещено на http://www.allbest.ru/
Блок схема операции добавление элемента в кольцевой список. (рис. 12)
Размещено на http://www.allbest.ru/
2.2 Описание библиотечных функций
Класс создания кольцевого списка: public partial class Form1: Form
questionList = new List<Question>(); - лист, с начальными элементами
private void Check(); - сортировка по возрастанию
private void Print(); - проверка на отсутствие ячеек
private void button1_Click_1(object sender, EventArgs e); - навигация по ячейкам
private void button3_Click_1(object sender, EventArgs e); - замена содержимого ячейки
private void button2_Click(object sender, EventArgs e); - удаление ячейки
private void button3_Click(object sender, EventArgs e); - добавление ячейки
3. Результаты работы программы
Режим создания кольцевого списка
На рисунке 13 и рисунке 14, изображен результат работы программы создания кольцевого списка.
Рисунок 13 вид программы
Рисунок 14 замена данных первого элемента
4. Руководство пользователя
1. Ввести значение и нажать «Изменить данные»
2. Далее вводить значения добавляемых элементов и выбрать «Добавить элемент»
3. Навигация по всем существующим и добавленным ячейкам происходит с помощью кнопки «Следующая ячейка»
4. При необходимости можем удалить ячейку памяти.
Заключение
В результате проделанной работы:
· изучены разделы дисциплины «Алгоритмы и структуры данных» в объёме, необходимом для написания программного продукта;
· исследованы свойства циклических структур;
· разработан алгоритм задачи;
· спроектирована структура программного изделия;
· разработан алгоритм отображения кольцевого списка;
· на языке C# разработана программа отображения списка;
При изучении темы были сделаны выводы о структуре кольцевого списка.
Циклические (кольцевые) списки проще в реализации, имеют более высокую скорость работы.
Задачи, сформулированные в данном курсовом проекте, были выполнены в полном объеме.
Список использованной литературы
1. Лойко В.И. Структуры и алгоритмы обработки данных: учебное пособие. Краснодар: КубГАУ, 2000. 261 с.
2. Лойко В.И. Алгоритмы и структуры данных: Курс лекций. Краснодар: КубГАУ, 2006. 120 с.
3. Ахо А. и др. Структуры данных и алгоритмы /А. Ахо, Дж. Хопкрофт, Дж. Ульман: Пер. с англ. М.: Вильямс, 2000. 384 с.
4. Хусаинов Б.С. Структуры и алгоритмы обработки данных, Примеры на языке Си (CD): Учебное пособие. М.: Финансы и статистика, 2004. 464 с.
Приложение
Листинг программы кольцевой структуры данных
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1: Form
{
List<Question> questionList;
int currentQuestionIndex = 0;
public Form1()
{
InitializeComponent();
questionList = new List<Question>()
{
new Question(0, "Первый элемент"),
new Question(1, "Второй элемент"),
new Question(2, "Третий элемент"),
new Question(3, "Четвертый элемент"),
new Question(4, "Пятый элемент")
};
textBox1.Text = questionList[currentQuestionIndex].Text;
}
private void Check()
{
if (currentQuestionIndex >= questionList.Count)
currentQuestionIndex = 0;
}
private void Print()
{
if (questionList.Count > 0)
textBox1.Text = questionList[currentQuestionIndex].Text;
else
textBox1.Text = "<Список пуст>";
}
private void button1_Click_1(object sender, EventArgs e)
{
currentQuestionIndex++;
Check();
Print();
}
private void button2_Click_1(object sender, EventArgs e)
{
if (questionList.Count > 0)
questionList.RemoveAt(currentQuestionIndex);
Check();
Print();
}
private void button3_Click(object sender, EventArgs e)
{
questionList.Insert(currentQuestionIndex, new Question(currentQuestionIndex,textBox2.Text));
if (questionList.Count > 0)
questionList.RemoveAt(currentQuestionIndex+1);
}
private void button4_Click(object sender, EventArgs e)
{
questionList.Insert(currentQuestionIndex, new Question(currentQuestionIndex, textBox3.Text));
}
}
public struct Question
{
private int index;
private string text;
public Question(int index, string text)
{
this.index = index;
this.text = text;
}
public int Index { get { return this.index; } }
public string Text { get { return this.text; } }
}
}
Размещено на Allbest.ru
...Подобные документы
Расположение элементов списка в памяти. Информация о полях структуры TMember. Логическая структура двусвязного кольцевого списка. Логические схемы наиболее важных операций со списками. Алгоритмы обработки основных структур. Руководство пользователя.
курсовая работа [2,3 M], добавлен 27.08.2012Средства создания динамических структур данных. Формат описания ссылочного типа. Структура памяти во время выполнения программы. Линейные списки, стек, очередь. Организация списков в динамической памяти. Пример создания списка в обратном порядке.
лабораторная работа [788,2 K], добавлен 14.06.2009Реализация программы, разработанной в среде Turbo C++. Обработка динамической структуры данных, содержащей сведения об авторах книг. Моделирование работы со структурой как с базой данных. Метод сортировки и описание работы пользовательских подпрограмм.
курсовая работа [124,3 K], добавлен 23.12.2010Изучение применяемых в программировании и информатике структур данных, их спецификации и реализации, алгоритмов обработки данных и анализ этих алгоритмов. Программа определения среднего значения для увеличивающегося количества чисел заданного типа.
контрольная работа [16,0 K], добавлен 19.03.2015Разработка блок-схемы и программы обработки одномерного массива с доступом к элементам с помощью индексов и с помощью указателей. Словесное описание алгоритма и пользовательского интерфейса, листинг программы обработки матрицы и результат её выполнения.
курсовая работа [391,1 K], добавлен 30.09.2013Исследование существующих методов организации динамических структур данных. Методы реализации мультисписковых структур используя особенности языка C++. Физическая структура данных для сохранения в файл. Разработка алгоритмов и реализация основных функций.
курсовая работа [504,1 K], добавлен 25.01.2015Составление алгоритма сортировки линейной вставкой. Понятие однонаправленного циклического списка символов, реализация процедуры подсчета суммы элементов и составление алгоритма. Прямое представление дерева, алгоритм работы с ним на абстрактном уровне.
контрольная работа [32,8 K], добавлен 20.01.2012Использование класса статических массивов структур и базы данных "ODER" при создании программы на языке С++. Основные формы выдачи результатов. Технические и программные средства. Тесты для проверки работоспособности алгоритма создания программы.
курсовая работа [1,1 M], добавлен 17.03.2015Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы.
курсовая работа [532,7 K], добавлен 20.07.2014Понятия и методика создания списков и баз данных в Microsoft Excel. Фильтрация списков, виды сортировки данных и структурирования листа. Сортировка с помощью списка автозаполнения и "слева направо". Создание сводки о реализации товара за один день.
курсовая работа [618,3 K], добавлен 25.04.2013Основные этапы создания алгоритмов, представление в виде программы. Рассмотрение методов решения задач. Метод поэтапных уточнений. Различие между численными и логическими алгоритмами. Реализация цикла со счетчиком. Процесс разработки сложного алгоритма.
презентация [1,3 M], добавлен 22.10.2013Реализация линейных списков в языке программирования C++. Основные операции при работе с ними. Разработка интерфейса и алгоритмов. Описание работы программы на псевдокоде. Составление программного кода. Тестирование, отладка и результат работы программы.
курсовая работа [1,1 M], добавлен 07.01.2014Исследование методов и средств многопоточного взаимодействия, особенности использования блокирующей и неблокирующей синхронизации. Разработка, программная реализация и тестирование структуры данных и алгоритмов чтения, записи, освобождения памяти.
дипломная работа [2,2 M], добавлен 24.06.2012Рассмотрение общей характеристики данных. Исследование особенностей и назначения линейных, табличных и иерархических структур данных, анализ процесса их упорядочения. Рассмотрение основных режимов обработки данных. Описание алгоритма решения задачи.
реферат [27,4 K], добавлен 20.04.2019Разработка программы "Игроки КХЛ 2012-2013" на языке С++ с использованием классов списков структур для обработки данных. Описание глобальных переменных, разработанных функций. Главное меню программы. Чтение данных из файла, их просмотр и сохранение.
курсовая работа [2,2 M], добавлен 17.03.2016Анализ характеристик объекта компьютеризации. Разработка структур данных, алгоритмов и программного обеспечения системы управления базой данных. Особенности синтеза структур данных. Разработка алгоритмов системы и оценка результатов тестирования.
курсовая работа [37,0 K], добавлен 07.12.2010Переход от словесной неформальной постановки к математической формулировке данной задачи. Оценка различных вариантов с целью выбора наиболее эффективных структур данных и алгоритмов обработки. Реализация алгоритмов на одном из языков программирования.
курсовая работа [35,0 K], добавлен 25.06.2013Сущность понятий: "куча" (пул памяти), связный список, синхронизация потоков; разработка программы, исключающей возможность перекрытия потоков друг другом. Организация связных списков и использование функций API для работы с пулом памяти в ОС Windows.
курсовая работа [145,3 K], добавлен 11.05.2012Анализ предметной области. Обзор программ-аналогов. Рассмотрение средств решения поставленной задачи. Проектирование структуры программы и базовых алгоритмов. Изучение руководства программиста и пользователя. Проектирование структуры базы данных.
курсовая работа [1,0 M], добавлен 14.11.2017Освоение функций работы со структурами данных и файлами. Разработка программного обеспечения для создания, обработки сведений о сотрудниках учреждения. Реализация алгоритма программы в среде Microsoft Visual Studio 2010. Изучение руководства пользователя.
курсовая работа [3,3 M], добавлен 28.08.2012