Студопедия — Задание. Написать программу по работе сосвязанным списком, который заполнен числами, кратными вашему порядковому номеру в журнале
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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






Написать программу по работе сосвязанным списком, который заполнен числами, кратными вашему порядковому номеру в журнале. Эти числа должны быть отсортированы в порядке убывания (способ сортировки выбирается по желанию).

Порядок выполнения работы

Написать программу, демонстрирующую работу с односвязным списком. Описать некоторые функции для работы с ним.

 

#include < stdio.h>

#include < alloc.h>

/* Структура для описания односвязного (однонаправленного) списка*/

typedef int ELEMTYPE;

typedefstruct node { ELEMTYPE elem; struct node * next; } *LIST;

/* Инициализация списка/ как пустого */

LIST init(LIST *l)

{ return *l=NULL; }

/* Добавление элемента в голову списка */

LIST cons (ELEMTYPE e, LIST l)

{ LIST news=(LIST)malloc(sizeof(struct node));

news-> elem=e;

news-> next=l;

returnnews;

}

/* Печать списка целых */

voidprintlist(LIST l)

{ printf(" \n");

while (l! =NULL) (printf(" %5d", l-> elem); l=l-> next;; }

}

 

/* Добавление элемента в конец списка */

LIST last(ELEMTYPE e, LIST l)

{ LIST head;

if (! l) { l=(LIST)malloc(sizeof(struct node));

l-> elem=e;

l-> next=NULL;

return l;

}

else { head=l;

while (l-> nexti=NULL) l=l-> next;

l-> next= (LIST) malloc (sizeof (struct node));

l=l-> next;

l-> elem=e;

l-> next=NULL;

return head;

}

}

 

/* Удвоить все вхождения данного элемента в список */

 

LIST doubleE(ELEMTYPE E, LIST l)

{ LIST head=l, tmp;

while (l)

if (l-> elem==E)

{/* вставить после него */

tmp=l-> next;

l-> next=(LIST)malloc(sizeof(struct node));

l-> next-> elem=l-> elem;

l-> next-> next=tmp;

l=tmp;

}

else l=l-> next;

return head;

}

 

/* Удалить из списка все вхождения заданного элемента */

LIST delE(ELEMTYPE E, LIST l)

{ LIST head=l, w;

if (! l) return head;

while (l-> next)

if (l-> next-> elem==E) {w=l-> next; l-> next=l-> next-> next; free(w); }

else l=l-> next;

return head;

}

/* Тестирующая программа */

voidmain(void)

{

LIST p;

init(& p);

p=last(0, p); p=cons(l, p); p==cons (2, p); p=cons(3, p); p=last(4, p);

p=last(5, p); p=last(6, p); p=cons(2, p); p=last(4, p);

printlist(p);

p=doubleE(2, p);

printlist(p);

p=doubieE(4, p);

printlist(p);

p=delE(4/p);

printlist (p);

}

 

Контрольные вопросы

1. Что представляют собой связанные списки и какие виды связанных списков вы знаете?

2. К каким структурам данным относятся связанные списки?

3. С помощью какой структуры данных можно наиболее эффективно решить задачу сортировки и почему?

4. Что представляет собой элемент динамической структуры данных?

5. Какие операции можно выполнять над списками?

Требования к отчету

Отчет должен содержать:

1. Тему и цель работы.

2. Задание.

3. Программу на языке программирования C++.

4. Скриншоты с результатами выполнения программы.

5. Ответы на контрольные вопросы.

6. Выводы о проделанной работе.

 

Лабораторная работа № 7

Стеки

Цель

Формирование навыков организации данных в виде стеков на языке программирования высокого уровня.

 







Дата добавления: 2014-11-10; просмотров: 552. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

РЕВМАТИЧЕСКИЕ БОЛЕЗНИ Ревматические болезни(или диффузные болезни соединительно ткани(ДБСТ))— это группа заболеваний, характеризующихся первичным системным поражением соединительной ткани в связи с нарушением иммунного гомеостаза...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия