Тема «Алгоритмы сортировки»

Тема «Алгоритмы сортировки»

ВВЕДЕНИЕ

Цель данной курсовой работы является сделать многофайловый проект в среде Visual Studio на языке C. Для заслуги цели нужно решить последующие задачки:

- Выполнить программную реализацию задач по изученным темам дисциплины с применением принципов модульного программирования;

- Приготовить тестовые примеры и протестировать задачки;

- Сделать многофайловый проект. С помощью меню организовать переход по Тема «Алгоритмы сортировки» ссылкам на каждую из изученных тем: рекурсия, структуры, файлы, сортировки, стеки, очереди, деревья и графы.

В курсовую работу заходит: введение, главы, заключение, перечень использованной литературы и приложение.

Тема «Рекурсивные функции»

Теоритическая часть

Рекурсивной именуют функцию, которая прямо либо косвенно сама вызывает себя. При каждом воззвании к рекурсивной функции создается новый набор объектов Тема «Алгоритмы сортировки» автоматической памяти, локализованных в теле функции.

Рекурсивные методы эффективны, к примеру, в тех задачках, где рекурсия применена в определении обрабатываемых данных. Потому суровое исследование рекурсивных способов необходимо проводить, вводя динамические структуры данных с рекурсивной структурой. Разглядим сначала только принципные способности, которые предоставляет язык Си для организации Тема «Алгоритмы сортировки» рекурсивных алгоритмов.

Различают прямую и косвенную рекурсии. Функция именуется косвенно рекурсивной в этом случае, если она содержит воззвание к другой функции, содержащей прямой либо косвенный вызов определяемой (первой) функции. В данном случае по тексту определения функции её рекурсивность (косвенная) может быть не видна. Если в теле функции очевидно употребляется вызов этой Тема «Алгоритмы сортировки» же функции, то имеет место ровная рекурсия, т.е. функция, по определению, рекурсивная (по другому – самовызываемая либо самовызывающая). Традиционный пример – функция для вычисления факториала неотрицательного целого числа. В литературе по программированию рекурсиям уделено довольно внимания как в теоретическом плане, так и в плане рассмотрения устройств реализации рекурсивных алгоритмов. Сравнивая рекурсию Тема «Алгоритмы сортировки» с итерационными способами, отмечают, что рекурсивные методы более применимы в случаях, когда намеченная цель либо применяемые данные определены рекурсивно. В тех случаях, когда вычисляемые значения определяются при помощи обычных рекуррентных соотношений, еще эффективнее использовать итеративные способы. Таким макаром, определение корня математической функции, строительство в степень и Тема «Алгоритмы сортировки» вычисление факториала только иллюстрируют схемы организации рекурсивных функций, но не являются примерами действенного внедрения рекурсивного подхода к вычислениям. (1)

Практические задачки

Задание № 1. Написать метод поиска обычных чисел, не превосходящих n, как рекурсивную функцию.

Таблица 1

Наименование переменной Тип Предназначение
Входные данные n int Число, вводимое с клавитуры
j int Переменная цикла, передается Тема «Алгоритмы сортировки» в функцию для проверки на простоту
s int Делимое
i int Делитель
Выходные данные n int Число до которого выводятся обыкновенные числа

Блок схема всей программки:

Листинг программки:

#include

#include

#include

int recurs (int s,int i);

int main()

{

int j,n;

printf("Введите число:");

scanf("%d",&n);

for(j=2;j<=n;j++)

if(recurs (j Тема «Алгоритмы сортировки»,2))

printf("Обычное число :%d\n",j);

system(“pause”);

return 0

}

int recurs (int s,int i)

{

if(s==i) return 1;

if(s%i==0) return 0;

return recurs (s,i+1);

}

Рис 1.1. Вывод обычных чисел при помощи рекурсии

Задание № 2. обрисовать рекурсивную функцию, осуществляющую перевод целого числа из десятичной системы счисления в систему с Тема «Алгоритмы сортировки» основанием К. Перевести данное число N из десятичной системы в системы с основанием 2,8,16.

Таблица № 2.

Наименование переменной Тип Предназначение
Входные данные n int Делимое
k int Делитель
l int Переменная для количества чисел
n1 int Число, которое переводится в другую систему исчисления
k1 int Система исчисления
Выходные данные n Тема «Алгоритмы сортировки»1 int Переведенное число

Блок схема всей программки:

Листинг программки:

#include

#include

#include

void recurs (int n,int k);

void main()

{

setlocale(LC_ALL,”RUS”);

int n1,k1,l;

printf("Введите количество чисел для перевода:");

scanf("%d", &l);

for( int i=0;i

{

printf("Введите число:");

scanf("%d", &n1);

printf("Введите систему Тема «Алгоритмы сортировки» исчисления:");

scanf("%d", &k1);

printf("Итог:");

recurs(n1,k1);

printf("\n");

}

}

void recurs(int n,int k)

{

if(n>=k) recurs (n/k,k);

switch(n%k)

{

case 10:printf("A");break;

case 11:printf("B");break;

case 12:printf("C");break;

case 13:printf("D");break;

case 14:printf("E");break;

case 15:printf Тема «Алгоритмы сортировки»("F");break;

default:printf("%d",n%k);

}

}

Итог работы программки:

Рис 1.4. Перевод числа 255 в различные системы исчисления

Тема «Структуры»

Теоритическая часть

Структура - это одна либо несколько переменных, которые для удобства работы с ними сгруппированы под одним именованием. Структуры помогают в организации сложных данных, так как позволяют группу связанных меж собой переменных трактовать не Тема «Алгоритмы сортировки» как огромное количество отдельных частей, как единое целое.

Объявление структуры начинается с ключевика struct и содержит перечень объявлений, заключенный в фигурные скобки. За словом struct может следовать имя, называемое тегом структуры. Тег дает заглавие структуре данного вида и дальше может служить коротким обозначением той части объявления, которая Тема «Алгоритмы сортировки» заключена в фигурные скобки.

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

Объявление структуры определяет тип. За правой фигурной скобкой, закрывающей перечень частей, могут следовать переменные точно так же, как они могут быть указаны после наименования Тема «Алгоритмы сортировки» хоть какого базисного типа.

Объявление структуры, не содержащей перечня переменных, не резервирует памяти; оно просто обрисовывает шаблон, либо эталон структуры. Но если структура имеет тег, то этим тегом дальше можно воспользоваться при определении структурных объектов.

Доступ к отдельному элементу структуры осуществляется средством конструкции вида:

имя структуры . элемент

Структуры Тема «Алгоритмы сортировки» могут быть вложены друг в друга. Единственно вероятные операции над структурами - это их копирование, присваивание, взятие адреса и воплощение доступа к ее элементам. Копирование и присваивание также содержат в себе передачу функциям аргументов и возврат ими значений. Структуры нельзя ассоциировать.

Указатели на структуры употребляются очень нередко, потому для доступа Тема «Алгоритмы сортировки» к ее элементам была выдумана еще одна, более маленькая форма записи.

р-›элемент-структуры

Массивы структур. Представим нам необходимо уметь хранить ключевики в виде массива строк и счетчики ключевиков в виде массива целых. Один из вероятных вариантов - это иметь два параллельных массива:

char *keyword[NKEYS];

int keycount[NKEYS];

Но конкретно тот Тема «Алгоритмы сортировки» факт, что они параллельны, дает подсказку нам другую компанию хранения - через массив структур. Каждое ключевое слово можно обрисовать парой черт

char *word;

int count;

Такие пары составляют массив. Объявление

struct key

{

char *word;

int count;

} keytab[NKEYS];

заявляет структуру типа key и определяет массив keytab, каждый элемент которого является структурой этого типа и которому Тема «Алгоритмы сортировки» будет выделена память.

Инициализаторы задаются парами, чтоб соответствовать конфигурации структуры. Но когда инициализаторы - обыкновенные константы либо строчки знаков и они все имеются в наличии, во внутренних скобках нет необходимости. (1)

Практическая задачка.

Задание: сделать структуру с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и протестировать функции:

· ввода и вывода на экран даты Тема «Алгоритмы сортировки»;

· по году и порядковому номеру денька в году вычисляющую число и месяц года, соответственному этому деньку;

· находящую в массиве введенных дат самую позднюю

Таблица №3.

Наименование переменной Тип Предназначение
Входные данные b.d, b.m, b.y int Структурные переменные
c int Переменная для меню
q int Переменная Тема «Алгоритмы сортировки» для меню
с сhar Переменная для считывания из файла
i int Счётчик для массива структур
max, max2,max3 int Переменные для определения наибольшей даты
cnt, cnt1 int Счётчики для нахождения максимумов,если дат с одним годом(месяцем) несколько
h[20],h1[20] int Массивы для запоминания номеров дат с наибольшим годом либо месяцем Тема «Алгоритмы сортировки»
b.d1, b.y1 int Структурные переменные для денька и года
Выходные данные b.d, b.m, b.y int В массиве структур хранятся даты

Блок-схема главной функции структуры.

Листинг программки(неполный):

#include

#include

void output(void);

void day(void);

void last_year(void);

void input(void);

struct

{

int Тема «Алгоритмы сортировки» d;

int m;

int y;

}b[100];

void main_struct(void)

{

printf("Структуры\n");

for(;;)

{

int c;

printf("1-Ввод новейшей даты\n");

printf("2-Вывод всех дат\n");

printf("3-Нахождение самой поздней даты\n");

printf("4-Определение денька по номеру\n");

printf("5-Вернуться в главное меню\n");

do

{

printf("Введите номер подходящего пт:");

scanf("%d Тема «Алгоритмы сортировки»",&c);

}while(c5);

switch(c)

{

case 1:

{

input();system("PAUSE");

system("cls");break;

}

case 2:

{

output();system("PAUSE");

system("cls");break;

}

case 3:

{

last_year();system("PAUSE");

system("cls");break;

}

case 4:

{

day();system("PAUSE");

system("cls");break;

}

case 5: return;

}

}

}

Полный листинг программки приведен в приложении.

Итог работы программки:

Рис 2.1. Ввод новейшей Тема «Алгоритмы сортировки» даты в массив структур

Рис 2.2. Вывод всех дат с файла

Рис 2.3. Нахождение самой поздней даты

Рис 2.4. Определение денька и месяца по номеру денька

Тема «Файлы».

Теоритическая часть.

Доступ к файлам. Для того чтоб можно было читать из файла либо писать в файл, он должен быть за ранее открыт при помощи библиотечной функции fopen. Функция Тема «Алгоритмы сортировки» fopen получает наружное имя типа x.txt, после этого возвращает указатель, применяемый в предстоящем для доступа к файлу.

Для определения указателя файла, - это задать описания такового, к примеру, вида:

FILE *fp;

FILE *fopen(char *name, char *mode);

это гласит, что fp есть указатель на FILE, a fopen Тема «Алгоритмы сортировки» возвращает указатель на FILE. Заметим, что FILE - это имя типа наподобие int, а не тег структуры. Воззвание к fopen в программке может смотреться последующим образом:

fp = fopen(name, mode);

1-ый аргумент - строчка, содержащая название файла. 2-ой аргумент несет информацию о режиме. Это тоже строчка: в ней указывается, каким образом Тема «Алгоритмы сортировки» юзер хочет использовать файл. Вероятны последующие режимы: чтение (read - "r"), запись (write - "w") и добавление (append - "a"), т. е. запись инфы в конец уже имеющегося файла. Различают текстовые и бинарные файлы; в случае последних в строчку режима нужно добавить буковку "b" (binary - бинарный). Открытие уже имеющегося файла на запись приводит к удалению Тема «Алгоритмы сортировки» его старенького содержимого, в то время как при открытии файла на добавление его старенькое содержимое сохраняется. Попытка читать несуществующий файл является ошибкой. Могут иметь место и другие ошибки; к примеру, ошибкой считается попытка чтения файла, который по статусу запрещено читать. При наличии хоть какой ошибки fopen Тема «Алгоритмы сортировки» возвращает NULL.

Последующее, что следует знать, - это как читать из файла либо писать в файл. Существует несколько методов сделать это, из которых самый обычный заключается в том, чтоб пользоваться функциями getc и putc. Функция getc возвращает последующий знак из файла; ей нужно сказать указатель файла, чтоб она знала откуда брать знак Тема «Алгоритмы сортировки».

int getc(FILE *fp);

Функция getc возвращает последующий знак из потока, на который показывает *fp; в случае исчерпания файла либо ошибки она возвращает EOF.

Функция putc пишет знак c в файл fp

int putc(int с, FILE *fp);

и возвращает записанный знак либо EOF в случае ошибки. Аналогично getchar и putchar Тема «Алгоритмы сортировки», реализация getc и putc может быть выполнена в виде макросов, а не функций.

Форматный ввод-вывод файлов можно выстроить на функциях fscanf и fprintf. Они схожи scanf и printf с той только различием, что первым их аргументом является указатель на файл, для которого осуществляется ввод-вывод, формат же Тема «Алгоритмы сортировки» указывается вторым аргументом.

int fscanf(FILE *fp, char *format,…)

int fprintf(FILE *fp, char *format,…)

int fclose(FILE *fp) - оборотная по отношению к fopen; она разрывает связь меж файловым указателем и наружным именованием (которая ранее была установлена при помощи fopen), освобождая тем этот указатель для других файлов. Потому Тема «Алгоритмы сортировки» что в большинстве операционных систем количество сразу открытых одной программкой файлов ограничено, то файловые указатели, если они больше не необходимы, лучше освобождать, как это и делается в программке. (2)

Практическая задачка

Задание : Имеется текстовый файл. Переписать его строчки в другой файл, поменяв местами слова в строчках.

Таблица № 4.

Наименование переменной Тип Предназначение Тема «Алгоритмы сортировки»
Входные данные *p,b[100][100] char Для разбивания строк на лексемы
e char Считывания из файла
s[100][100] char Считывания из файла текста
q int Переменная для выбора в меню
Выходные данные b[100][100] char Запись в файл слов текста в оборотном порядке
s[100][100] char Скопирован весь текст

Блок-схема функции file().

Листинг программки Тема «Алгоритмы сортировки»(неполный):

#include

#include

#include

void file(void);

void file_main()

{

int q;

printf("Файлы\n");

for(;;)

{

printf("1-Задание\n");

printf("2-Вернуться в главное меню\n");

do

{

printf("Изберите пункт меню:");

scanf("%d",&q);

}while(q3);

switch (q)

{

case 1:

{

file();

system("pause");

system("cls");

break;

}

case 2: return;

}

}

}

Полный листинг программки приведен в Тема «Алгоритмы сортировки» приложении.

Итог работы программки:

Рис 3.1. Итог

Тема «Алгоритмы сортировки»

Теоритическая часть

Перед разговором о разных методах сортировки, их недочетах и преимуществах, нужно ввести в рассмотрение понятие анализа эффективности алгоритмов. Формально термин "анализ алгоритмов" значит процесс исследования эффективности алгоритмов, которую можно оценить по двум характеристикам: времени выполнения метода и требуемому объему оперативки.

Различают Тема «Алгоритмы сортировки» два вида эф­фективности: временную и пространственную. Временная эффективность является индикатором скорости работы метода. Пространственная эффективность указывает, сколько дополнительной оператив­ной памяти необходимо для работы метода.

Всё внимание перебежало на временную эффективность благодаря развитию ЭВМ.

Оценка размера входных данных. Время выполнения большинства алгоритмов впрямую находится в зависимости Тема «Алгоритмы сортировки» от размера вводимых данных. Эффективность метода можно обрисовать в виде функции от некого параметра, связанного с размером входных данных.

Каковы единицы измерения времени выполнения метода? Для этого можно просто вос­пользоваться— секундой, милли­секундой и т.д. и с помощью их оценить время выполнения программки, реализующей рассматриваемый метод. Но Тема «Алгоритмы сортировки» у такового подхода есть очевидные недочеты - определение единиц измерения времени выполнения метода через единицы измерения времени имеет недочеты, так как результаты измерений будут зависеть от многих причин

Мы должны составить перечень более принципиальных операций, выполняемых в ал­горитме, именуемых основными, либо базисными операциями (basic operation), найти, какие из их заносят Тема «Алгоритмы сортировки» больший вклад в общее время выполнения метода, и вычислить, сколько раз эти операции производятся. Обычно, составить перечень главных операций метода совершенно нетруд­но. Обычно в него включают более долгие по времени операции, выпол­няемые во внутреннем цикле метода. К примеру, в большинстве алгоритмов сортировки употребляется способ сопоставления 2-ух частей Тема «Алгоритмы сортировки» (ключей) перечня, ко­торый сортируется. Для подобного типа алгоритмов основной является операция сопоставления ключей. Таким макаром, показатель для анализа временной эффективности ал­горитмов будет оцениваться по количеству главных операций, которые должен выполнить метод при обработке вход­ных данных размера n. (3)

Практическая задачка

Задание: Дана матрица размерностью NxN, содержащая целые числа. Отсортировать Тема «Алгоритмы сортировки» диагонали матрицы, расположенные выше главной по убыванию частей способом вставки.

Таблица № 5.

Наименование переменной Тип Предназначение
Входные данные c char Считывание с файла
i, j int Переменные для циклов
a[100][100] int Считывание массива с файла
s[100] int Диагонали считываются в этот массив и передаются в сортирующую функцию
t int Тема «Алгоритмы сортировки» Счётчик для массива s
Выходные данные s[100] int Отсортированные диагонали
a[100][100] int Отсортированный массив

Блок-схема функции insert_sort()

Листинг программки(неполный):

#include

#include

void insertion_sort(int *a,int t);//сортировка

void insert_sort(void);//функция вывода и вызова сортировки массива

void sort_main()

{

int q;

for(;;)

{

printf("Сортировки\n");

printf Тема «Алгоритмы сортировки»("1-Задание №1\n");

printf("2-Вернуться в главное меню\n");

do

{

printf("Изберите пункт меню:");

scanf("%d",&q);

}while(q3);

switch (q)

{

case 1:

{

insert_sort();system("pause");

system("cls");break;

}

case 2: return;

}

}

}

Полный листинг программки приведен в приложении.

Итог работы программки:

Рис.4.1 Сортировка диагоналей матрицы

Задание № 2: Переписать данные из файла «Сортировка перечня Тема «Алгоритмы сортировки»(r).txt» в файл «Сортировка перечня(w).txt»

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

Таблица № 6.

Наименование переменной Тип Предназначение
Входные данные a[100] struct Считывание перечня
temp struct Темповая переменная для сортировки
b[100] struct Для отбора с циклическими фамилиями
i,j,l,m int Переменные Тема «Алгоритмы сортировки» для циклов
Выходные данные b[100] struct Отобранные с схожими фамилиями сортируются по имени и заносятся в файл

Блок-схема функции bubble_sort_fn()

Листинг программки(неполный):

#include

#include

#include

void bubble_sort_fn(void);//вывод и сортировка перечня по фамилиии и имени

void bubble_sort_fam(struct sp *a,int Тема «Алгоритмы сортировки» n);// функция сортирует по фамилии

void bubble_sort_name(struct sp *b,int n);//функция сортирует по имени

struct sp

{

int nm;

char f[30];

char name[20];

char o[25];

int y;

char note[6];

}a[100],temp,b[100];

void sort_main()

{

int q;

for(;;)

{

printf("Сортировки\n");

printf("1-Задание\n");

printf("2-Вернуться в главное меню\n Тема «Алгоритмы сортировки»");

do

{

printf("Изберите пункт меню:");

scanf("%d",&q);

}while(q3);

switch (q)

{

case 1:

{

bubble_sort_fn();

system("pause");

system("cls");

break;

}

case 2: return;

}

}

}

Полный листинг программки приведен в приложении.

Итог работы программки:

Рис 4.2. Сортировка перечня по фамилии и имени

Тема «Линейные списки»

Теоритическая часть

Линейные списки. В арифметике перечень – это последовательность Тема «Алгоритмы сортировки» частей 1-го типа. Принципиальное свойство перечня состоит в том, что элементы линейно упорядочены в согласовании с их позицией в перечне.

Самый обычный метод связать огромное количество частей – сделать так, чтоб каждый элемент содержал ссылку на последующий элемент последовательности. Такую динамическую структуру именуют однонаправленным (односвязным) линейным перечнем. Если каждый элемент перечня содержит Тема «Алгоритмы сортировки» две ссылки: одну на последующий элемент, вторую на предшествующий, то таковой перечень именуют двунаправленным. А если последний элемент связать указателем с первым, то получится кольцевой перечень.

На рис.5.1 приведена структура односвязного перечня. На нем поле INF - информационное поле, данные, NEXT - указатель на последующий элемент перечня. В поле указателя Тема «Алгоритмы сортировки» последнего элемента перечня находится особый признак NULL, свидетельствующий о конце перечня.

Рис. 5.1. Односвязный перечень

Но, обработка односвязного перечня не всегда комфортна, потому что существует возможность перемещения по списку только в одну сторону. Такую возможность обеспечивает двусвязный перечень, каждый элемент которого содержит два указателя: на последующий и предшествующий элементы перечня. Структура Тема «Алгоритмы сортировки» линейного двусвязного перечня приведена на рис.5.2 , где поле NEXT - указатель на последующий элемент, поле PREV - указатель на предшествующий элемент. В последних элементах надлежащие указатели должны содержать NULL, как и показано на рисунке.

Для удобства обработки перечня добавляют очередной особенный элемент - указатель конца перечня. Наличие 2-ух указателей в каждом Тема «Алгоритмы сортировки» элементе усложняет перечень и приводит к дополнительным затратам памяти, но в то же время обеспечивает более действенное выполнение неких операций над перечнем.

Разновидностью рассмотренных видов линейных списков является кольцевой перечень, который может быть организован на базе как односвязного, так и двусвязного списков. При всем этом в односвязном перечне указатель последнего элемента Тема «Алгоритмы сортировки» должен указывать на 1-ый элемент; в двусвязном перечне в первом и последнем элементах надлежащие указатели переопределяются, как показано на рисунке 5.3.

При работе с такими перечнями несколько упрощаются некие процедуры, выполняемые над перечнем. Но, во время просмотра такового перечня следует принять меры предосторожности, чтоб не попасть в нескончаемый цикл Тема «Алгоритмы сортировки».

Дальше тщательно разглядим два личных варианта однонаправленного перечня (стек и очередь) и общий случай двунаправленного перечня.

Стек – это личный случай однонаправленного перечня, добавление частей в который и подборка частей из которого производится с 1-го конца. Другие операции со стеком не определены. При выборке элемент исключается из стека. Стек Тема «Алгоритмы сортировки» реализует принцип LIFO (last in – first out, последним пришел – первым вышел).

Структура содержит базисный элемент, в каком есть:

· информационное поле inf, которое может быть хоть какого типа не считая файлового, и будет употребляться для хранения значений, к примеру чисел, строк и др.

· кассылочное поле next, в каком хранится адресок последующего элемента Тема «Алгоритмы сортировки» в стеке, и которое будет употребляться для связи частей стека.

Очередь – это личный случай перечня, добавление частей в который производится в один конец, а подборка осуществляется из другого конца. Другие операции с очередью не определены. При выборке элемент исключается из очереди. Очередь реализует принцип FIFO (first in-first Тема «Алгоритмы сортировки» out –первым вошел, первым вышел). В программировании очереди используются при математическом моделировании, буферном вводе-выводе и других задачках.

Организация очереди:

Структура содержит базисный элемент, в каком есть:

· информационное поле inf, которое может быть хоть какого типа, не считая файлового, и будет употребляться для хранения значений.

· ссылочное поле next, в Тема «Алгоритмы сортировки» каком хранится адресок последующего элемента очереди, и которое будет употребляться для организации связи частей. (2)

Практические задачки

Стек

Задание: Сделать перечень из слов,в который все слова начального текст входят только один раз.

Таблица № 7.

Наименование переменной Тип Предназначение
Входные данные head->a struct(char) Информационная часть стека
a char Считывание строк из файла Тема «Алгоритмы сортировки»
*s,p[100][100] char Разбиение строк на лексемы, после отбора не циклических слов,заносятся в стек
i int Счётчик для массива
cnt int Счётчик для отбора слов
Выходные данные head->a struct(char) Слова, которые не повторяются заносятся сюда

Блок-схема функции stack().

Листинг программки(неполный):

#include

#include

#include

#define open_file "Нереально Тема «Алгоритмы сортировки» открыть файл.\n"

#define text "Начальный текст:\n"

#define spisok "Начальный перечень частей:\n"

#define out_spisok "Приобретенный перечень частей:\n"

struct st

{

char a[100]; //информационное поле целого типа

st *n; //указатель на последующий элемент стека

}*head;

st *in_s()

{

return NULL;

}

void push (st *&s, char i[100]);

char *pop(st *&s Тема «Алгоритмы сортировки»);

int empty_st(st *s);

void stack();

void main_menu()

{

int q;

for(;;)

{

printf("1-Стек\n");

printf("2-Вернуться к главному меню\n");

do

{

printf("Изберите пункт меню:");

scanf("%d",&q);

}while(q3);

switch(q)

{

case 1:

{

stack();

system("pause");

system("cls");

break;

}

case 2: return;

}

}

}

Полный листинг программки приведён в приложении.

Итог работы Тема «Алгоритмы сортировки» программки:

Рис.5.6. Стек из слов

Очередь

Задание: Сделать перечень из чисел. Исключить все повторяющиеся попорядку элементы. Бросить по одному из их.

Таблица № 7.

Наименование переменной Тип Предназначение
Входные данные h->inf int Информационная часть очереди
q[50] int Массив из чисел в который считывается из файла
Выходные данные h->inf int Тема «Алгоритмы сортировки» Хранятся неповторяющиеся числа

Блок-схема функции tqueue_f()

Листинг программки(неполный):

#include

#include

#include

#define open_file "Нереально открыть файл.\n"

#define text "Начальный текст:\n"

#define spisok "Начальный перечень частей:\n"

#define out_spisok "Приобретенный перечень частей:\n"

struct tqueue

{

int inf;

tqueue *next;

}*h,*t;

void init_tq(tqueue *&h Тема «Алгоритмы сортировки», tqueue *&t);

void insert_tq(tqueue *&h,tqueue *&t, int item);

int take_tq(tqueue *&h, tqueue *&t);

int empty_tq(struct tqueue *h);

void tqueue_f();

void main_menu()

{

int q;

for(;;)

{

printf("1-Очередь\n");

printf("2-Вернуться к главному меню\n");

do

{

printf("Изберите пункт меню:");

scanf("%d",&q);

}while Тема «Алгоритмы сортировки»(q3);

switch(q)

{

case 1:

{

tqueue_f();

system("pause");

system("cls");

break;

}

case 2: return;

}

}

}

Полный листинг программки приведён в приложении.

Итог работы программки:

Рис.5.7. Элементы очереди


tema-9-osnovnie-psihologicheskie-koncepcii.html
tema-9-osobennosti-porazheniya-sdyav-preimushestvenno-citotoksicheskogo-dejstviya.html
tema-9-ostrie-processi-bryushnoj-polosti-u-detej-rabochaya-uchebnaya-programma-disciplini-detskaya-hirurgiya-po-specialnosti.html