Студопедия Главная Случайная страница Обратная связь

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

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





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

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

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

 

#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; просмотров: 578. Нарушение авторских прав; Мы поможем в написании вашей работы!




Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

Устройство рабочих органов мясорубки Независимо от марки мясорубки и её технических характеристик, все они имеют принципиально одинаковые устройства...

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

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