Студопедия — Пример реализации двусвязного списка с помощью массива данных
Студопедия Главная Случайная страница Обратная связь

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

Пример реализации двусвязного списка с помощью массива данных






Список можно представить в виде массива. Для представления однонаправленного списка, элементами которого являются целые числа, можно использовать двумерный массив Sp[2][MaxEl], где МахEl равно количеству элементов списка. Причем в Sр[1, i] располагается элемент списка, а Sp[2, i] является указа­телем и определяет позицию следующего элемента.

Двунаправленный список можно представить двумер­ным массивом Sp[3][N]. В этом случае, например, можно считать, что элемент списка расположен в Sp[1][i], а Sp[2][i] и Sp[3][i] соответственно указывают предыдущий и следующий элементы списка.

Организацию списков с помощью массива данных можно выполнить различными путями. Можно зарезервировать несколько массивов одинаковой размерности. В основном массиве хранится значащая информация, во вспомогательных – значения индексов следующих элементов списка и значения индексов предыдущих элементов списка, если список двусвязный. В нижеследующем примере основная информация представлена в массиве list, индексы следующих элементов – в массиве next, индексы предыдущих элементов – в массиве prev.

 

Пример 12.2

/* Создать список с помощью массива целых чисел

Элементы списка в обратном порядке вывести на экран */

#include < stdio.h>

#include < stdlib.h>

#define MAX 50

int main (void)

{

int list[MAX];

int next[MAX];

int prev[MAX];

int end=0;

int begin=0;

for (int i=0; i< MAX; i++)

{ list[i]=next[i]=prev[i]=0; }

printf(" Input the number of elements: ");

int n=0;

scanf(" %d", & n);

prev[0]=-1;

printf(" Input elements of list: ");

int count=0;

for (i=0; i< n; i++)

{ scanf(" %d", & list[i]);

next[i]=i+1;

prev[i]=i-1;

count++;

}

prev[0]=-1;

next[count]=-1;

begin=0;

end=count-1;

printf(" Elements of list from the end to begin: ");

int temp=end;

do { printf(" %d ", list[temp]);

temp=prev[temp];

} while (prev[temp]! =-1);

printf(" %d \n", list[temp]);

system(" PAUSE");

return 0; }

Варианты индивидуальных заданий

 

1. Создать список с помощью массива целых чисел. Элементы списка в обратном порядке вывести на экран.

2. Создать список с помощью массива целых чисел. Все четные элементы списка вывести на экран.

3. Создать список с помощью массива целых чисел. Все нечетные элементы списка вывести на экран.

4. Создать односвязный список с помощью массива целых чисел. Отсортировать элементы списка по возрастанию, задавая порядок чисел массивом индексов следующих элементов (next). В результате массив чисел остается без изменений, массив индексов переупорядочивается. Результирующий список вывести на экран.

5. Создать односвязный список с помощью массива целых чисел. Расположить в начале списка все четные элементы списка, задавая порядок чисел массивом индексов следующих элементов (next). В результате массив чисел остается без изменений, массив индексов переупорядочивается. Результирующий список вывести на экран.

6. Создать односвязный список с помощью массива целых чисел. Исключить из списка все нулевые элементы, задавая порядок чисел массивом индексов следующих элементов (next). В результате массив чисел остается без изменений, массив индексов переупорядочивается. Результирующий список вывести на экран.

7. Создать односвязный список с помощью массива целых чисел. Исключить из списка все нулевые элементы, задавая порядок чисел массивом индексов следующих элементов (next). В результате массив чисел остается без изменений, массив индексов переупорядочивается. Найти сумму все четных элементов списка. Результирующий список и сумму вывести на экран.

8. Создать односвязный список с помощью массива целых чисел. Ввести с клавиатуры число и поместить его за пятым элементом списка, задавая порядок чисел массивом индексов следующих элементов (next). Результирующий список вывести на экран.

9. Создать односвязный список с помощью массива целых чисел. Ввести с клавиатуры число и поместить его перед тем элементом списка, который больше него. Результирующий список вывести на экран. Порядок чисел в списке задается массивом индексов следующих элементов (next).

10. Создать односвязный список с помощью массива целых чисел. Ввести с клавиатуры число, найти это число в списке и удалить. Результирующий список вывести на экран. Порядок чисел в списке задается массивом индексов следующих элементов (next).

11. Создать односвязный список с помощью массива целых чисел. Ввести с клавиатуры число, найти все элементы с этим числом в списке и удалить. Результирующий список вывести на экран. Порядок чисел в списке задается массивом индексов следующих элементов (next).

12. Создать односвязный список с помощью массива целых чисел. Поменять местами четные и нечетные элементы списка (рядом стоящие). Результирующий список вывести на экран. Порядок чисел в списке задается массивом индексов следующих элементов (next).

 

13. Создать односвязный список с помощью массива целых чисел. Сформировать новый список, в котором элементы следуют от конца к началу (последний элемент станет первым, предпоследний – вторым и т.д.). Результирующий список вывести на экран. Порядок чисел в списке задается массивом индексов следующих элементов (next).

14. Создать односвязный список с помощью массива целых чисел. Продублировать в списке первый, третий и пятый элементы. Результирующий список вывести на экран. Порядок чисел в списке задается массивом индексов следующих элементов (next).

15. Создать односвязный список с помощью массива целых чисел. Удалить в списке первый, третий и пятый элементы. Результирующий список вывести на экран. Порядок чисел в списке задается массивом индексов следующих элементов (next).

16. Создать список с помощью массива структур. Элементы списка в обратном порядке вывести на экран.

17. Создать список с помощью массива структур. Все четные элементы списка вывести на экран.

18. Создать список с помощью массива структур. Все нечетные элементы списка вывести на экран.

19. Создать односвязный список с помощью массива структур. Отсортировать элементы списка по возрастанию. Результирующий список вывести на экран.

20. Создать односвязный список с помощью массива структур. Один из элементов структуры – целое число. Расположить в начале списка все элементы списка с четными целыми числами. Результирующий список вывести на экран.

21. Создать односвязный список с помощью массива структур. Исключить из списка все элементы с нулевым целым числом. Результирующий список вывести на экран.

22. Создать односвязный список с помощью массива структур. Исключить из списка все элементы с нулевым целым числом. Найти сумму тех целочисленных элементов списка, которые являются четными. Результирующий список и сумму вывести на экран.

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

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

25. Создать односвязный список с помощью массива структур. Ввести с клавиатуры число, найти это число в списке (в целочисленном поле) и удалить соответствующий элемент списка. Результирующий список вывести на экран.

26. Создать односвязный список с помощью массива структур. Ввести с клавиатуры число, найти все элементы с этим числом (в целочисленном поле) в списке и удалить. Результирующий список вывести на экран.

27. Создать односвязный список с помощью массива структур. Поменять местами четные и нечетные элементы списка (рядом стоящие). Результирующий список вывести на экран.

28. Создать односвязный список с помощью массива структур. Сформировать новый список, в котором элементы следуют от конца к началу (последний элемент станет первым, предпоследний – вторым и т.д.). Результирующий список вывести на экран.

29. Создать односвязный список с помощью массива структур. Продублировать в списке первый, третий и пятый элементы. Результирующий список вывести на экран.

30. Создать односвязный список с помощью массива структур. Удалить в списке первый, третий и пятый элементы. Результирующий список вывести на экран.

31. Написать программу, содержащую процедуру, которая меняет местами первый и второй элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующее сообщение.

32. Написать программу, содержащую процедуру, которая меняет местами первый и пятый элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.

33. Написать программу, содержащую процедуру, которая меняет местами первый и последний элементы непустого списка. Если элементы не найдены, то выдать на экран соответствующие сообщение.

34. Написать программу, содержащую процедуру, которая вставляет новый элемент перед каждым вхождением заданного элемента. Если элементы не найдены, то выдать на экран соответствующие сообщение.

35. Написать программу, содержащую процедуру, которая вставляет новый элемент за каждым вхождением заданного элемента. Если элементы не найдены, то выдать на экран соответствующие сообщение.

36. Написать программу, содержащую подпрограмму, которая проверяет на равенство списки М1 и М2.

37. Написать программу, содержащую функцию, которая определяет, входит ли список М1 в список М2. Предполагается, что списки существуют.

38. Написать программу, содержащую подпрограмму, которая копирует в конец непустого списка М его первый элемент. Если элементы не найдены, то выдать на экран соответствующие сообщение.

39. Написать программу, содержащую подпрограмму, которая копирует в начало непустого списка М его последний элемент. Если элементы не найдены, то выдать на экран соответствующие сообщение.

 

40. Написать программу, содержащую процедуру, которая копирует в список М за каждым вхождением заданного элемента все элементы списка М1.

41. Написать программу, содержащую процедуру, которая объединяет два упорядоченных по неубыванию списка М1 и М2 в один упорядоченный по неубыванию список, построив новый список М.

42. Написать программу, содержащую процедуру, которая объединяет два упорядоченных по неубыванию списка М1 и М2 в один упорядоченный по неубыванию список, сменив соответствующим образом ссылки в М1 и М2.

43. Написать программу, содержащую функцию, которая проверяет, упорядочены ли элементы списка по алфавиту.

44. Написать программу сортировки существующего списка по алфавиту. В программе использовать подпрограммы.

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

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

47. Написать программу, которая создавала бы текстовый файл, а затем формировала список строк файла. Создать список обратных строк. В программе использовать подпрограммы.

48. Написать программу, которая создавала бы текстовый файл, а затем формировала список строк файла. Создать отсортированный список строк. В программе использовать подпрограммы.

49. Написать программу, которая создавала бы файл комбинированного типа, а затем формировала список, используя какое-либо поле записи. Создать отсортированный список. В программе использовать подпрограммы.

50. Написать программу, которая создавала бы файл комбинированного типа, а затем формировала список элементов файла. Создать отсортированный по какому-либо полю список. В программе использовать подпрограммы.

51. Составить программу, которая вводит с клавиатуры названия городов, динамически отводит место в памяти под каждое название и строит из них связанный список, упорядоченный по алфавиту. По окончании формирования список городов вывести на экран монитора.

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

53. Информацию о величине экспорта и соответствующий номер контракта записать в двусвязный кольцевой список. Затем переместить данную информацию в двумерный динамический массив и осуществить поиск максимальной величины экспорта. На экран вывести искомую информацию.

54. Создать двусвязный список, содержащий следующую информацию: год и соответствующую численность населения. Программу организовать таким образом, чтобы на экран выводилась информация, численность населения в которой была больше введенного с клавиатуры значения.

55. Ввести с клавиатуры строку символов, формируя из ее элементов двусвязный список. Написать программу, которая формирует двусвязный список из входной строки. В поле данных каждого элемента списка записывается отдельный символ. В программе производится анализ первого символа входной строки: если это буква 'А', то в конец списка добавляется еще одна буква 'А', иначе из списка исключаются все буквы 'А'. Полученный результат выводится на экран.







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



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

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

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

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

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

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

Примеры задач для самостоятельного решения. 1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P   1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P...

Законы Генри, Дальтона, Сеченова. Применение этих законов при лечении кессонной болезни, лечении в барокамере и исследовании электролитного состава крови Закон Генри: Количество газа, растворенного при данной температуре в определенном объеме жидкости, при равновесии прямо пропорциональны давлению газа...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Шов первичный, первично отсроченный, вторичный (показания) В зависимости от времени и условий наложения выделяют швы: 1) первичные...

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