Исследование линейных одно- и двусвязных списков
Ознакомление с процессом выполнения операции включения элемента в линейный односвязный список. Рассмотрение и анализ особенностей меню разрабатываемой программы. Исследование и характеристика результатов сравнения односвязного и двусвязного списков.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.03.2016 |
Размер файла | 994,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство сельского хозяйства Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
Высшего профессионального образования
КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ
Факультет прикладной информатики
Кафедра компьютерных технологий и систем
Курсовая работа
По дисциплине: «Алгоритмы и структуры данных»
На тему: «Исследование линейных одно- и двусвязных списков»
Выполнил(а) студент группы: БИ1401 Винокурова Екатерина Петровна
Руководитель курсовой работы: к.т.н., доцент Лукьяненко Т.В.
Краснодар 2015
Реферат
Ключевые слова: односвязный список, двусвязный список, служебное поле, структура, операция, указатель.
Краткая характеристика работы:
Программа, реализованная в данной курсовой работе, предназначена для работы с двусвязным, односвязным, односвязным циклическим, двусвязным циклическим списками.
Оглавление
Реферат
Введение
1. Теоретическая часть
1.1 Односвязный и односвязный циклический списки
1.2 Двусвязный и двусвязный циклический списки
2. Практическая часть
2.1 Описание программы
2.2 Блок-схема программы
Заключение
Список литературы
Приложение
Введение
C++ - компилируемый язык программирования общего назначения, сочетает свойства как высокоуровневых, так и низкоуровневых языков программирования. В сравнении с его предшественником - языком программирования C, - наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «язык программирования C++» происходит от языка программирования C, в котором унарный оператор ++ обозначает инкремент переменной.
Не существует единственного самого лучшего способа создания программ. Для решения задач разного рода и уровня сложности требуется применять разные технологии программирования. Довольно часто можно встретить задачи, в которых количество элементов постоянно меняется, но при этом последовательность следования объектов должна оставаться неизменной. Но более жестким условием является непредсказуемость количества «объектов». В подобных случаях можно заказать массив размером, превышающий максимально возможный. Однако это неэффективно и могут возникнуть проблемы в других частях программы. Лучшим решением является организация списков. Организация односвязного, двусвязного, односвязного циклического и двусвязного циклического списков и является целью моей работы.
1. Теоретическая часть
1.1 Односвязный и односвязный циклический списки
Связный список - структура, элементы которой имеют один и тот же формат и связаны друг с другом с помощью указателей, хранящихся в самих элементах.
В односвязном списке каждый элемент состоит из двух различных по назначению полей: содержательного поля (поле данных) и служебного поля (поля указателя), где хранится адрес следующего элемента списка «рисунок 1». Поле указателя последнего элемента списка содержит нулевой указатель, свидетельствующий о конце списка.
Рисунок 1 - Односвязный список. Логическая структура
Линейность односвязного списка вытекает из линейной логической упорядоченности его элементов: для каждого элемента, за исключением первого и последнего, имеются единственный предыдущий и единственный последующий элементы. Односвязные списки всегда линейны, поэтому особое внимание следует уделить проблеме перестройки списка при его повреждении.
Рисунок 2 - Выполнение операции включения элемента в линейный односвязный список
Логическая структура линейного односвязного списка:
Имя списка (идентификатор), тип элементов списка, указатель начала списка, указатель текущего элемента списка.
Логическая структура элемента линейного односвязного списка:
Рисунок 3 - Выполнение операции исключения элемента из линейного односвязного списка
Данные или указатель на данные, указатель на следующий элемент списка.
Продвижение в линейном односвязном списке возможно только в одном направлении. Результаты выполнения операций включения элемента в линейный односвязный список и исключения элемента из линейного односвязного списка - линейный односвязный список.
Для ускорения операции доступа к элементам односвязного списка поле указателя последнего элемента односвязного списка содержит указатель на начало списка. Такая разновидность линейного односвязного списка называется кольцевой односвязный список рисунок 4, причем первым элементом такого списка может быть любой из его элементов.
Рисунок 4 - Кольцевой односвязный список. Логическая структура
1.2 Двусвязный и двусвязный циклический списки
В линейном двусвязном списке продвижение возможно в любом из двух направлений по цепочке элементов. Каждый элемент двусвязного списка содержит два указателя: указатель на следующий элемент, или прямой указатель, и указатель на предыдущий элемент, или обратный указатель «рисунок 5». У первого элемента двусвязного списка обратный указатель пустой, а у последнего элемента двусвязного списка - прямой указатель.
Рисунок 5 - Линейный двусвязный список. Логическая структура
Линейность такого списка обеспечивается тем, что каждый из двух указателей в любом элементе списка, кроме крайних, задает линейный порядок элементов, обратный по отношению к порядку, устанавливаемому другим указателем рисунок 6.
Рисунок 6 - Линейность двусвязного списка
Логическая структура линейного двусвязного списка:
Имя списка (идентификатор), тип элементов списка, указатель начала списка, указатель конца списка, указатель текущего элемента списка.
Логическая структура элемента линейного двусвязного списка:
Данные или указатель на данные, указатель на следующий элемент списка, указатель на предыдущий элемент списка.
Рисунок 7 - Кольцевой двусвязный список. Логическая структура
Продвижение в линейном двусвязном списке возможно в любом направлении. Операции включения элемента в линейный двусвязный список и исключения элемента из линейного двусвязного списка реализуются аналогично соответствующим операциям над линейным односвязным списком. Результат выполнения операций включения элемента в линейный двусвязный список и исключения элемента из линейного двусвязного списка - линейный двусвязный список.
Для получения из линейного двусвязного списка кольцевого двусвязного списка необходимо два пустых указателя заменить указателями противоположных концов списка рисунок 7.
2. Практическая часть
Разработать программу, реализующую алгоритм двусвязного, односвязного, двусвязного циклического, односвязного циклического списков (20 элементов). В качестве элемента списка выбрать структуру:
Факультет I. Код (ключ). Название. Фамилия И.О. декана. Количество кафедр. Количество преподавателей
Предусмотреть заполнение списка из файла (подготовить файл на 20 элементов). Предусмотреть многоуровневое меню:
1)Заполнение списка с начала
a)с консоли (циклически)
b)из файла
2)Вставка элемента (с консоли) в список
a)в конец списка
b)вслед за указанным элементом (по ключу)
3)Вставка элементов (из файла) в список
a)в конец списка
b)вслед за указанным элементом (по ключу)
4)Удаление элемента
a)из конца списка
b)по ключу
5)Очистка списка (с выводом удаляемых элементов)
a) безвозвратно
b)с сохранением в файл
6)Вывод элементов, содержащихся в списке
a)на экран
b) в файл
7)Вывод количества элементов в списке
8)Выход
2.1 Описание программы
Программа, реализованная в данной курсовой работе предназначена для работы с двусвязным, односвязным, двусвязным циклическим и односвязным циклическим списками. Меню программы выглядит так рисунок 8:
Рисунок 8 - Меню программы
При выборе первого пункта меню вызывается функция enter, пользователю предоставляется выбор: заполнить список с консоли или считать из файла желаемое количество элементов рисунок 9.
Рисунок 9 - Сделайте выбор1
При выборе второго пункта меню вызывается функция insert1, пользователь вводит элемент с консоли и ему предоставляется выбор: добавить его в конец списка или по ключу рисунок 10.
Рисунок 10 - Сделайте выбор2
При выборе третьего пункта меню вызывается функция insert2, элемент считывается их файла и пользователю предоставляется выбор: добавить в конец списка или по ключу рисунок 11.
Рисунок 11 - Сделайте выбор3
При выборе четвертого пункта меню вызывается функция delet, пользователю предоставляется выбор: удалить элемент по ключу или из конца списка рисунок 12.
Рисунок 12 - Сделайте выбор4
При выборе пятого пункта меню вызывается функция clean, пользователю предоставляется выбор: отчистить список безвозвратно или с сохранением в файл рисунок13.
Рисунок 13 - Сделайте выбор5
При выборе шестого пункта меню вызывается функция print, пользователю предоставляется выбор: вывести список на экран или сохранить его в файл рисунок 14.
Рисунок 14 - Сделайте выбор6
При выборе седьмого пункта меню вызывается функция number, на экран выводится количество элементов в списке. При выборе восьмого пункта меню происходит завершение программы. Результат программы рисунок 15. односвязный программа линейный
Рисунок 15 - Результат программы
2.2 Блок-схема программы
Блок-схема программы смотреть рисунок 16, рисунок 17.
Рисунок 16 - Блок-схема1
Рисунок 17 - Блок-схема2
Заключение
В данной курсовой работе были реализованы 4 вида списков. При изучении данной темы были полученные обширные теоретические и практические знания на тему динамических структур данных.
Если сравнивать односвязный линейный и односвязный циклический списки, то:
Односвязный линейный список (ОЛС). Каждый узел ОЛС содержит 1 поле указателя на следующий узел. Поле указателя последнего узла содержит нулевое значение (указывает на NULL).
Односвязный циклический список (ОЦС). Каждый узел ОЦС содержит 1 поле указателя на следующий узел. Поле указателя последнего узла содержит адрес первого узла (корня списка).
Если сравнивать двусвязный линейный и двусвязный циклический списки, то:
Двусвязный линейный список (ДЛС). Каждый узел ДЛС содержит два поля указателей: на следующий и на предыдущий узел. Поле указателя на следующий узел последнего узла содержит нулевое значение (указывает на NULL). Поле указателя на предыдущий узел первого узла (корня списка) также содержит нулевое значение (указывает на NULL).
Двусвязный циклический список (ДЦС). Каждый узел ДЦС содержит два поля указателей: на следующий и на предыдущий узел. Поле указателя на следующий узел последнего узла содержит адрес первого узла (корня списка). Поле указателя на предыдущий узел первого узла (корня списка) содержит адрес последнего узла.
Сравнивание односвязного и двусвязного списков:
Линейный список представляет собой набор элементов (узлов), соединенных в цепочку. Обычно элемент представляет собой запись, которая содержит поле - указатель на следующий элемент.
Двусвязный список мало чем отличается от односвязного, но у него появляется еще одна компонента, в которой хранится адрес предыдущего элемента.
Список литературы
1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. -- М.: Наука, 2005 г.
2. Березин Б.И., Березин С.Б. Начальный курс С и C++. -- М.: ДИАЛОГ-МИФИ, 2007г.
3. Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. --Харьков: Фолио, Ростов н/Д: Феникс, 2010.
4. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. -- М.: Мир, 2003.
5. Вирт Н. Алгоритмы и структуры данных. -- М.: Мир, 2007.
6. Гладков В. П. Задачи по информатике на вступительном экзамене в вуз и их решения: Учебное пособие. -- Пермь: Перм. техн. ун-т, 2011.
7. Гладков В. П. Курс лабораторных работ по программированию: Учебное пособие для специальностей электротехнического факультета ПГТУ. Пермь: Перм. техн. ун-т, 2013.
8. Грогоно П. Программирование на языке Паскаль. --М.: Мир, 2009.
9. Дагене В.А., Григас Г. К., Аугутис К.Ф. 100 задач по программированию. -- М.: Просвещение, 2002.
10. Епашников A.M., Епашников В.А. Программирование в среде Турбо Паскаль 7.0. -- М.: МИФИ, 2004.
11. Заварыкин В.М., Житомирский В.Г., Лапчик М.П. Основы информатики и вычислительной техники. -- М.: Просвещение, 2001.
Приложение
#include <iostream>
#include <stdio.h>namespace std;faculty //структура
{code;name[45];fio[45];numkaf;teacher;faculty *pred;faculty *next;
}*phead=NULL,*last,info;countelem=0;ShowMenu () //меню
{<<endl<<
"----------------------------------------"<<endl<<
" MENU "<<endl<<
"----------------------------------------"<<endl<<
"<1> - Заполнение списка"<<endl<<
"<2> - Вставка элемента в список с консоли"<<endl<<
"<3> - Вставка элемента в список из файла"<<endl<<
"<4> - Удаление элемента"<<endl<<
"<5> - Очистка списка с выводом их на экран"<<endl<<
"<6> - Вывод элементов"<<endl<<
"<7> - Вывод количества элементов в списке"<<endl<<
"<8> - Выход"<<endl;.sync();getchar();
};enter() //функция для ввода списка
{(true) //цикл для выбора операции ввода
{{<<"Сделайте выбор"<<endl<<
"<1> - заполнение с консоли"<<endl<<
"<2> - заполнение с файла"<<endl<<
"<3> - конец операции ввода"<<endl;p;>>p;(p<1 || p>3) throw (char*)"Ошибка ввода, попробуйте заново";(p==1) //ввод с кансоли
{
{:if(countelem==20) throw(char*)"Список полный, выберите другую операцию";n=0;<<"Введите желаемое количество элементов в списке: ";
cin>>n;<<endl;(int i=0;i<n;++i)
{(countelem==20) goto m;*pf = new faculty; // временная переменная
cout<<i+1<<") "<<"Введите код факультета: ";>>pf->code;<<"Введите название факультета: ";>>pf->name;<<"Введите ФИО декана: ";>>pf->fio;
cout<<"Введите количество кафедр: ";>>pf->numkaf;<<"Введите преподователей: ";
cin>>pf->teacher;<<endl;
//создание двусвязного списка(phead==0) // вставка первого элемента
{>next=NULL;>pred=NULL;
phead=pf; //голова указывает на созданный элемент=pf;
}// если не первый
{>next = pf;>next = NULL;>pred = last;= pf;
}++;
}
}(char *str) //сообщение и конец операции если список полон
{<<str<<endl<<endl;;
}
}if(p==2) //ввод с файла
{
{:if(countelem==20) throw(char*)"Список полный, выберите другую операцию";*temp=phead;n=0;
cout<<"Введите желаемое количество элементов в списке: ";
cin>>n;<<endl;*f;
f = fopen("Список_структур.dat","r");
for(int i=0;i<n;++i)
{(countelem==20) goto k;x=0;*pf = new faculty;(pf,sizeof(info),1,f);(temp!=0) // проверка совпадения
{(temp->code==pf->code)
{++;;
}=temp->next;
}(x==0) // нет совпадения
{
//создание двусвязного списка(phead==0) // вставка первого элемента
{
pf->next=NULL;>pred=NULL;
phead=pf; //голова указывает на созданный элемент=pf; //хвост
}//если не первый
{>next = pf;>next = NULL;>pred = last;= pf;
}++;
}(x==1) n++; //есть совпадение
}(f);
}(char *str) //сообщение и конец операции если список полон
{<<str<<endl<<endl;;
}
}if(p==3) return; // конец операции
}(char*str) // сообщение и рестарт операции если не правильный выбор
{<<str<<endl<<endl;
}
}
}insert1() //вставка элемента с консоли в список
{(true) //цикл для выбора операции вставки элемента
{
{<<"Сделайте выбор"<<endl<<
"<1> - вставить в конец списка"<<endl<<
"<2> - вставить по ключу"<<endl<<
"<3> - конец операции"<<endl;p;>>p;(p<1 || p>3) throw (char*)"Ошибка ввода, попробуйте заново";(p==1) //вставка элемента в конец списка
{
{(countelem==20) throw(char*)"Список полный, выберите другую операцию";*pf = new faculty;
//создание двусвязного списка<<"Введите код факультета: ";>>pf->code;<<"Введите название факультета: ";>>pf->name;<<"Введите ФИО декана: ";>>pf->fio;<<"Введите количество кафедр: ";>>pf->numkaf;<<"Введите преподователей: ";>>pf->teacher;<<endl;(phead==0) // вставка если первый элемент
{>next=NULL;>pred=NULL;
phead=pf; //голова указывает на созданный элемент=pf; //хвост
}//если не первый
{>next = pf;>next = NULL;>pred = last;= pf;
}++;
}(char *str) //сообщение и конец операции если список полон
{<<str<<endl<<endl;;
}
}if(p==2) //вставка элемента по ключу
{
{(countelem==20) throw(char*)"Список полный, выберите другую операцию";*temp=phead; //создание временного элемента
faculty *pf = new faculty;<<"Введите код факультета: ";
cin>>pf->code;<<"Введите название факультета: ";>>pf->name;<<"Введите ФИО декана: ";>>pf->fio;<<"Введите количество кафедр: ";>>pf->numkaf;<<"Введите преподователей: ";
cin>>pf->teacher;<<endl;(phead==NULL) // если первый
{<<"Список пуст, элемент будет первым"<<endl<<endl;>next=NULL;>pred=NULL;
phead=pf; //голова указывает на созданный элемент=pf; //хвост++;
}//если не первый
{
{<<"Введите ключ элемента, после которого вставить: ";l;>>l;(temp!=0) //проверка позиции элемента
{(temp->code==l) break;=temp->next;
}(temp==NULL) throw(char*)"Элемента с таким ключом нет, попробуйте другой";if(temp->code==last->code) //если элемент последний
{>next=0;>pred=last;>next=pf;=pf;
}// если элемент в любой позиции
{>next=temp->next;>next->pred=pf;>next=pf;>pred=temp;
}++;
}(char*str) // сообщение и рестарт операции если ошибка ввода
{<<endl;<<str<<endl<<endl;
}
}
}(char *str) //сообщение и конец операции если список полон
{<<str<<endl<<endl;;
}
}if(p==3) return; //конец операции
}(char*str) // сообщение и рестарт операции если не правильный выбор
{<<str<<endl<<endl;
}
}
}insert2() //вставка элемента из файла в список
{*temp=phead;(true) //цикл для выбора операции вставки элемента
{
{<<"Сделайте выбор"<<endl<<
"<1> - вставить в конец списка"<<endl<<
"<2> - вставить по ключу"<<endl<<
"<3> - конец операции"<<endl;p;>>p;(p<1 || p>3) throw (char*)"Ошибка ввода, попробуйте заново";(p==1) //вставка элемента в конец списка
{
{(countelem==20) throw(char*)"Список полный, выберите другую операцию";*f;= fopen("Список_структур.dat","r");
z:faculty *pf = new faculty;(pf,sizeof(info),1,f);
//создание двусвязного списка(temp!=NULL) // проверка совпадения
{(temp->code==pf->code)
{=phead;z;
}=temp->next;
}=phead;(temp==0) // вставка первого элемента
{>next=NULL;>pred=NULL;
phead=pf; //голова указывает на созданный элемент
last=pf; //хвост=phead;
}// если не первый
{>next = pf;
pf->next = NULL;>pred = last;
last = pf;
}++;
}(char*str) // сообщение и конец операции если список полон
{<<str<<endl<<endl;;
}
}if(p==2) //вставка элемента по ключу
{
{(countelem==20) throw(char*)"Список полный, выберите другую операцию";*f;= fopen("Список_структур.dat","r");
x:faculty *pf = new faculty;(pf,sizeof(info),1,f);(temp!=0) // проверка совпадения
{(temp->code==pf->code)
{=phead;x;
}=temp->next;
}=phead;(temp==NULL) // вставка первого элемента
{<<"Список пуст, элемент будет первым"<<endl<<endl;
pf->next=NULL;>pred=NULL;
phead=pf; //голова указывает на созданный элемент
last=pf; //хвост++;=phead;
}//если не первый
{
{<<"Введите ключ элемента, после которого вставить: ";
int l;>>l;(temp!=0)
{(temp->code==l) break;=temp->next;
}(temp==NULL)
{=phead;(char*)"Элемента с таким ключом нет, попробуйте другой";
}if(temp->code==last->code) //если элемент последний
{>next=0;>pred=last;>next=pf;=pf;
countelem++;
}// в любой позиции
{
pf->next = temp->next;>next->pred=pf;>next = pf;>pred = temp;
countelem++;
}
}(char*str) // сообщение и рестарт операции если ошибка ввода
{<<endl<<str<<endl<<endl;
}
}
}(char*str) // сообщение и конец операции если список полон
{<<str<<endl<<endl;;
}
}if(p==3) return; //конец операции
}(char*str) // сообщение и рестарт операции если не правильный выбор
{<<str<<endl<<endl;
}
}
}delet() //функция для выбора операции удаления элемента
{*temp=last; //создается временный элемент*ptemp=phead; //создается временный элемент:if(phead==NULL)
{<<"Список пуст,сначала заполните его"<<endl;;
}(true) //цикл для выбора операции удаления элемента
{
{<<"Сделайте выбор"<<endl<<
"<1> - удалить из конца списка"<<endl<<
"<2> - удалить по ключу"<<endl<<
"<3> - конец операции"<<endl;p;>>p;(p<1 || p>3) throw (char*)"Ошибка ввода, попробуйте заново";(p==1) //удаление из конца
{
if(phead==NULL) goto o;
if(ptemp->code==temp->code) // если единственный элемент в списке
{=NULL;=NULL;ptemp;
ptemp=NULL;-;
}// если не единственный
{=temp->pred;>next=NULL;temp;-;
}=last;=phead;
}if(p==2) //удаление по ключу
{
{<<"Введите ключ элемента: ";n;
cin>>n;(ptemp!=0) //поиск ключа
{(ptemp->code==n) break;=ptemp->next;
}(ptemp==NULL) throw(char*)"Элемента с таким ключом нет";(ptemp->code==phead->code && ptemp->code==last->code) // если элемент единственный
{=NULL;=NULL;ptemp;=NULL;-;
}if(ptemp->code==phead->code) // если элемент первый
{=ptemp->next;>pred=NULL;ptemp;=NULL;-;
}if(ptemp->code==last->code) //если элемент последний
{=ptemp->pred;>next=NULL;ptemp;=NULL;-;
}// если в любой позиции
{>pred->next=ptemp->next;>next->pred=ptemp->pred;ptemp;=NULL;-;
}=last;=phead;
}(char*str) // сообщение и рестарт если ошибка ввода
{<<endl<<str<<endl<<endl;
}
}if(p==3) return; //конец операции
}(char*str) // сообщение и рестарт операции если не правильный выбор
{<<str<<endl<<endl;
}
}
}clean() //функция для отчистки списка
{*temp=last; //создается временный элемент*ptemp=phead; //создается временный элемент(phead==NULL)
{<<"Список пуст,сначала заполните его"<<endl;;
}(true) //цикл для выбора операции отчистки списка
{
{<<"Сделайте выбор"<<endl<<
"<1> - отчистить безвозвратно"<<endl<<
"<2> - отчистить с сохранением в файл"<<endl<<
"<3> - конец операции"<<endl;p;>>p;(p<1 || p>3) throw (char*)"Ошибка ввода, попробуйте заново";(p==1) //удаление списка безвозвратно с выводом на экран
{i=1;(ptemp!=0) // вывод на экран списка
{<<i<<") Код факультета: "<<ptemp->code<<endl;
cout<<"Название факультета: "<<ptemp->name<<endl;
cout<<"ФИО декана: "<<ptemp->fio<<endl;
cout<<"К-во кафедр: "<<ptemp->numkaf<<endl;<<"К-во преподавателей: "<<ptemp->teacher<<endl<<endl;
i++;=ptemp->next;
}(temp!=0) //удаление списка
{temp;=temp->pred;
}=0;phead;=NULL;
}if(p==2) //удаление списка с сохранением в файл
{*f;=fopen("Список_структур_2.dat","w");(ptemp!=0) //запись списка в файл
{(ptemp,sizeof(info),1,f);=ptemp->next;
}=phead;(f);(temp!=0) //удаление списка
{temp;=temp->pred;
}=0;phead;=NULL;
}if(p==3) return; //конец операции
}(char*str) // сообщение и рестарт операции если не правильный выбор
{<<str<<endl<<endl;
}
}
}print() //просмотр элементов в списке
{*temp=phead; //создается временный элемент
if(phead==NULL)
{<<"Список пуст"<<endl;
return ;
}(true) //цикл для выбора операции вывода
{
{<<"Сделайте выбор"<<endl<<
"<1> - вывод списка на экран"<<endl<<
"<2> - вывод списка в файл"<<endl<<
"<3> - конец операции ввода"<<endl;p;>>p;(p<1 || p>3) throw (char*)"Ошибка ввода, попробуйте заново";(p==1) //вывод на экран
{
int i=1;(temp!=0) //вывод на экран
{<<i<<") Код факультета: "<<temp->code<<endl;
cout<<"Название факультета: "<<temp->name<<endl;
cout<<"ФИО декана: "<<temp->fio<<endl;
cout<<"К-во кафедр: "<<temp->numkaf<<endl;<<"К-во преподавателей: "<<temp->teacher<<endl<<endl;
i++;=temp->next;
}=phead;
}if(p==2) //вывод в файл
{*f;
f=fopen("Список_структур_2.dat","w");(temp!=0) //сохранение в файл
{
fwrite(temp,sizeof(info),1,f);=temp->next;
}=phead;(f);
}if(p==3) return; //конец операции
}(char*str) // сообщение и рестарт операции если не правильный выбор
{<<str<<endl<<endl;
}
}
}number() //Функция определяющая количество в списке
{
if(phead==NULL)
{<<"Список пуст"<<endl;
return ;
}<<"К-во элементов в списке: "<<countelem<<endl;
return;
}main()
{(LC_ALL, ""); //вывод русского текста
char p;(true)
{=ShowMenu(); //вызываем меню(p)
{'1': enter();break;'2': insert1();break;'3': insert2();break;'4': delet();break;'5': clean();break;'6': print();break;'7': number();break;
case '8': return 0;
}
}
}
Размещено на Allbest.ru
...Подобные документы
Понимание принципа работы очереди. Возможности обращения к первому и последнему элементов очереди. Создание очереди с помощью массива. Рассмотрение примеров использования очереди с приоритетом в программе. Формирование односвязного и двусвязного списков.
контрольная работа [345,6 K], добавлен 26.11.2020Выбор алгоритма решения задачи. Разработка программы, обеспечивающую эффективную обработку и хранение информации с использованием линейных списков. Написание программы на псевдокоде и на языке программирования высокого уровня. Результаты работы программы.
курсовая работа [2,1 M], добавлен 21.04.2012Реализация линейных списков в языке программирования C++. Основные операции при работе с ними. Разработка интерфейса и алгоритмов. Описание работы программы на псевдокоде. Составление программного кода. Тестирование, отладка и результат работы программы.
курсовая работа [1,1 M], добавлен 07.01.2014Понятие и обработка списков. Имя домена списка. Примеры записи списков. Основные принципы работы со списками. Рекурсивная программа обработки списка. Определение номера элемента или элемента по номеру. Решение задач, использующих структуру графа.
презентация [65,0 K], добавлен 29.07.2012Расположение элементов списка в памяти. Информация о полях структуры TMember. Логическая структура двусвязного кольцевого списка. Логические схемы наиболее важных операций со списками. Алгоритмы обработки основных структур. Руководство пользователя.
курсовая работа [2,3 M], добавлен 27.08.2012Требование к структуре данных в базе, описание ее вида, содержание объектов. Используемые форматы данных. Алгоритмы и их особенности. Функциональное описание разработки. Описание пользовательского интерфейса. Контрольные примеры, временные характеристики.
курсовая работа [1,5 M], добавлен 06.04.2016Разработка приложения, которое содержит данные об экспонатах и выставках. Создание базы данных и добавление элемента с информацией в любую позицию списков. Добавление и удаление экспонатов с выставки. Сохранение всех списков в файлы, составление отчета.
курсовая работа [1,2 M], добавлен 02.07.2014Линейный односвязный список (ЛОС) из введенных данных с клавиатуры с заданным указателем sag, работающий с типом данных Integer. Вывод информационных сообщений. Подсчет количества идентичных по содержанию элементов. Ввод данных в диалоговом режиме.
лабораторная работа [36,3 K], добавлен 03.03.2009Сущность понятий: "куча" (пул памяти), связный список, синхронизация потоков; разработка программы, исключающей возможность перекрытия потоков друг другом. Организация связных списков и использование функций API для работы с пулом памяти в ОС Windows.
курсовая работа [145,3 K], добавлен 11.05.2012Изображения древовидной структуры. Десятичная система обозначений Дьюи. Стандартные формы представления деревьев. Представление деревьев с использованием списков, с использованием списков сыновей. Полное бинарное дерево. Основные операции над кучей.
презентация [495,0 K], добавлен 19.01.2014Написание программы, исходя из конкретных данных. Создание двунаправленного линейного списка. Main - главная программа, содержащая меню. Занесение данных в память списка. Результирующий файл. Значения всех числовых данных из диапазона целого типа данных.
курсовая работа [2,3 M], добавлен 22.12.2010Понятия и методика создания списков и баз данных в Microsoft Excel. Фильтрация списков, виды сортировки данных и структурирования листа. Сортировка с помощью списка автозаполнения и "слева направо". Создание сводки о реализации товара за один день.
курсовая работа [618,3 K], добавлен 25.04.2013Рассмотрение понятия абстрактного типа данных. Реализация операций добавления элемента в пустой список и после указанных данных, удаления конкретного элемента и распечатки записей. Разработка интерфейса, исключающего нелигитимное модифицирование данных.
курсовая работа [721,4 K], добавлен 24.09.2010Разработка информационной системы с применением динамических структур данных. Назначение и область применения разрабатываемой программы по регистрации больных в поликлинике. Структурная схема фрагмента информационной системы, таблица имен и списков.
курсовая работа [325,6 K], добавлен 05.12.2013Использование метода абстракции в программировании на примере построения польской записи выражения с помощью стека. Абстрактные типы данных. Анализ классов реализации списков. Вставка и удаление элемента в список. Вычисление значения выражения на стеке.
презентация [166,7 K], добавлен 19.10.2014Изучение тегов для создания списков и таблиц в HTML, основных атрибутов тегов. Практические навыки создания списков и таблиц в HTML-документах. Нумерованные, маркированные и вложенные списки, список определений. Выравнивание данных в ячейках таблицы.
контрольная работа [322,1 K], добавлен 09.08.2014Средства выделения и освобождения памяти. Динамические структуры данных. Связные линейные списки и их машинное представление. Структура одно- и двухсвязного списка. Реализация операций над связными линейными списками. Разработка программы на языке С++.
курсовая работа [944,7 K], добавлен 14.03.2015Визуальный компонент, используемый для создания главного меню на форме, создание закладки и добавление в список воспроизведения музыкального файла. Определение повторения воспроизведения и отображение списков строк, проигрывание аудио и видео файлов.
лабораторная работа [128,7 K], добавлен 27.03.2012Динамические структуры данных, их классификация и разновидности, назначение и функциональные особенности. Линейные односвязные списки, их внутренняя организация и значение. Порядок и принципы составления программы, главные требования, предъявляемые к ней.
курсовая работа [137,4 K], добавлен 11.05.2014Исследование особенностей разработки линейных алгоритмов и их реализации в среде Delphi. Составление тестов для проверки программы. Характеристика основных элементов интерфейса, компонентов, значения их свойств. Построение графической схемы алгоритма.
лабораторная работа [316,6 K], добавлен 08.11.2012