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

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

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






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

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

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

 

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



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

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

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

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

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

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

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

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