Определение понятия связного списка. Организация односвязного, двусвязного, односвязного циклического и двусвязного циклического списков. Описание логической структуры списков, особенности их элементов. Особенности продвижения данных в разных списках.
Аннотация к работе
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Курсовая работа по дисциплине «Структуры и модели данных» на тему: «Создание библиотеки контейнерных классов для реализации динамической структуры списка»C - компилируемый язык программирования общего назначения, сочетает свойства как высокоуровневых, так и низкоуровневых языков программирования. В сравнении с его предшественником - языком программирования C, - наибольшее внимание уделено поддержке объектно-ориентированного и обобщенного программирования. Название «язык программирования C » происходит от языка программирования C, в котором унарный оператор обозначает инкремент переменной.Связный список - структура, элементы которой имеют один и тот же формат и связаны друг с другом с помощью указателей, хранящихся в самих элементах. В односвязном списке каждый элемент состоит из двух различных по назначению полей: содержательного поля (поле данных) и служебного поля (поля указателя), где хранится адрес следующего элемента списка (рис.1). Поле указателя последнего элемента списка содержит нулевой указатель, свидетельствующий о конце списка. Линейность односвязного списка вытекает из линейной логической упорядоченности его элементов: для каждого элемента, за исключением первого и последнего, имеются единственный предыдущий и единственный последующий элементы. Односвязные списки всегда линейны, поэтому особое внимание следует уделить проблеме перестройки списка при его повреждении.Каждый элемент двусвязного списка содержит два указателя: указатель на следующий элемент, или прямой указатель, и указатель на предыдущий элемент, или обратный указатель (рис.5). Линейность такого списка обеспечивается тем, что каждый из двух указателей в любом элементе списка, кроме крайних, задает линейный порядок элементов, обратный по отношению к порядку, устанавливаемому другим указателем (рис.6). Логическая структура линейного двусвязного списка: Имя списка (идентификатор), тип элементов списка, указатель начала списка, указатель конца списка, указатель текущего элемента списка. Операции включения элемента в линейный двусвязный список и исключения элемента из линейного двусвязного списка реализуются аналогично соответствующим операциям над линейным односвязным списком. Для получения из линейного двусвязного списка кольцевого двусвязного списка необходимо два пустых указателя заменить указателями противоположных концов списка (рис.8).Del = Del->next; // Доходим до элемента, который удаляется i ; Elem AFTERDEL = Del->next; // Доходим до элемента, который // следует за удаляемым if(PREVDEL != 0 && Count != 1){ // Если удаляем не голову Ins = Ins->next; // Доходим до элемента, перед temp->next = Head; // Следующий - бывшая голова if(Head != 0){ // Если элементы есть Element *temp=Curr; // сохраняем указатель на текущий элемент tag=temp->data;В данной курсовой работе были реализованы 4 вида списков.Пример работы программы: Размещено на .