Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Топ:
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Интересное:
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
При простом связанном хранении каждый элемент списка представляет собой структуру nd, состоящую из двух элементов: val - предназначен для хранения элемента списка, n - для указателя на структуру, содержащую следующий элемент списка. На первый элемент списка указывает указатель dl. Для всех операций над списком используется описание:
typedef struct nd
{ float val;
struct nd * n; } ND;
int i,j;
ND * dl, * r, * p;
Для реализации операций могут использоваться следующие фрагменты программ:
1) печать значения i-го элемента
r=dl;j=1;
while(r!=NULL && j++n;
if (r==NULL) printf("\n нет узла %d ",i);
else printf("\n элемент %d равен %f ",i,r->val);
2) печать обоих соседей узла(элемента), определяемого указателем p (см. Рис.4)

Рис.4. Схема выбора соседних элементов.
if((r=p->n)==NULL) printf("\n нет соседа справа");
else printf("\n сосед справа %f", r->val);
if(dl==p) printf("\n нет соседа слева");
else { r=dl;
while(r->n!=p) r=r->n;
printf("\n левый сосед %f", r->val);
}
3) удаление элемента, следующего за узлом, на который указывает р (см. Рис.5)

Рис.5. Схема удаления элемента из списка.
if ((r=p->n)==NULL) printf("\n нет следующего");
p->n=r->n; free(r->n);
4) вставка нового узла со значением new за элементом, определенным указателем р (см. Рис.6)

Рис.6. Схема вставки элемента в список.
r=malloc(1,sizeof(ND));
r->n=p->n; r->val=new; p->n=r;
5) частичное упорядочение списка в последовательность значений, s+t+1=l, так что K1'=K1; после упорядочения указатель v указывает на элемент K1' (см. Рис.7)

Рис.7. Схема частичного упорядочения списка.
ND *v;
float k1;
k1=dl->val;
r=dl;
while(r->n!=NULL)
{ v=r->n;
if (v->valn=v->n;
v->n=dl;
dl=v;
}
else r=v;
}
Постановка задачи
1. Элемент списка должен представлять собой структуру, состоящую из двух полей: одно поле – это какая-либо простейшая информация, заданная типом int или char, если в задании не оговорен какой-либо другой тип. Второе поле будет содержать указатель на следующий элемент списка или будет содержать признак конца списка.
2. Элементы списка должны вводиться с клавиатуры и размещаться в динамической памяти. Должен быть предусмотрен признак конца формирования списка, который сообщается пользователю.
3. После ввода списка вывести его на монитор.
4. Затем выполнить действия над элементами списка, заданные в конкретном варианте.
5. Элементы списка для поиска, сравнения, вставки и т.д. в список вводить с клавиатуры.
6. После выполнения преобразования над списком вывести результат на монитор.
Пример решения задачи
Все операции, которые необходимо выполнить над списком, подробно описаны в разделе 3.4.
Пример объявления элемента списка и всех указателей, необходимых для работы со списком (текущий элемент, голова списка и следующий).
typedef struct nd
{ <type> val;
struct nd * next; } ND;
ND * head, * current, * next;
Приняты следующие обозначения в описании вариантов заданий.
Параметры L, L1 и L2 обозначают списки, а параметры Е, E1 и Е2 -- данные типа <type> val, к которым применимы операции присваивания и проверки на равенство.
На рис. 8 представлена схема двух списков: с заглавным звеном и без заглавного звена. Под заглавным звеном подразумевается наличие элемента списка, в котором нет поля со значением, а есть только поле, которое содержит ссылку на начало списка.
Однонаправленный список без заглавного звена
Однонаправленный список с заглавным звеном
Рис.8.
Варианты заданий для лабораторной работы № 6
|
|
|
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!