М.Э. Абрамян - Programming Taskbook (1157415), страница 26
Текст из файла (страница 26)
Используя этуфункцию для проверки состояния очереди, а также функцию Dequeue иззадания Dynamic27, извлечь из исходной очереди пять начальных элементов (или все содержащиеся в ней элементы, если их менее пяти) ивывести их значения. Вывести также значение функции QueueIsEmptyдля полученной очереди и новые адреса ее начала и конца.Двусвязный списокDynamic29.
Дан адрес P2 записи типа TNode, содержащей поле Data (целоготипа) и поля Prev и Next (типа PNode — указателя на TNode). Эта записьсвязана полями Prev и Next соответственно с предыдущей и последующей записью того же типа. Вывести значения полей Data предыдущей ипоследующей записи, а также адреса P1 и P3 предыдущей и последующейзаписи.Dynamic30◦ . Дан указатель P1 на начало непустой цепочки элементов-записейтипа TNode, связанных между собой с помощью поля Next. Используя поле Prev записи TNode, преобразовать исходную (односвязную) цепочку вдвусвязную, в которой каждый элемент связан не только с последующимэлементом (с помощью поля Next), но и с предыдущим (с помощью поляPrev).
Поле Prev первого элемента положить равным nil. Вывести указа-Динамические структуры данных123тель на последний элемент преобразованной цепочки.В заданиях Dynamic31–Dynamic69 структура «двусвязный список» (doublylinked list) моделируется цепочкой узлов-записей типа TNode, связанных какс предыдущим, так и с последующим узлом (см. задание Dynamic30). ПолеNext последнего элемента цепочки и поле Prev первого элемента цепочкиравны nil. Для доступа к любому элементу двусвязного списка достаточноиметь указатель на один из его элементов, однако для ускорения операций сосписком удобно хранить три указателя: на первый элемент списка (first), на егопоследний элемент (last) и на текущий элемент (current).
Для пустого спискавсе эти указатели полагаются равными nil. Как в случае стека и очереди,значением элемента списка считается значение его поля Data.Dynamic31. Дан указатель P0 на один из элементов непустого двусвязногосписка. Вывести число N — количество элементов в списке, а также указатели P1 и P2 на первый и последний элементы списка.Dynamic32. Даны числа D1 и D2 и указатель P0 на один из элементов непустого двусвязного списка. Добавить в начало списка новый элемент созначением D1 , а в конец — новый элемент со значением D2 . Вывестиадреса первого и последнего элементов полученного списка.Dynamic33. Дано число D и указатель P0 на один из элементов непустого двусвязного списка. Вставить перед данным элементом списка новый элементсо значением D и вывести указатель на добавленный элемент списка.Dynamic34.
Дано число D и указатель P0 на один из элементов непустого двусвязного списка. Вставить после данного элемента списка новый элементсо значением D и вывести указатель на добавленный элемент списка.Dynamic35. Даны указатели P1 и P2 на первый и последний элементы двусвязного списка, содержащего не менее двух элементов. Продублироватьв списке первый и последний элементы (новые элементы добавлять передсуществующими элементами с такими же значениями) и вывести указатель на первый элемент преобразованного списка.Dynamic36.
Даны указатели P1 и P2 на первый и последний элементы двусвязного списка, содержащего не менее двух элементов. Продублироватьв списке первый и последний элементы (новые элементы добавлять послесуществующих элементов с такими же значениями) и вывести указательна последний элемент преобразованного списка.124М. Э. Абрамян. Электронный задачник Programming Taskbook 4.6Dynamic37. Дан указатель P1 на первый элемент непустого двусвязного списка. Продублировать в списке все элементы с нечетными номерами (новые элементы добавлять перед существующими элементами с такими жезначениями) и вывести указатель на первый элемент преобразованногосписка.Dynamic38.
Дан указатель P1 на первый элемент непустого двусвязного списка. Продублировать в списке все элементы с нечетными номерами (новыеэлементы добавлять после существующих элементов с такими же значениями) и вывести указатель на последний элемент преобразованногосписка.Dynamic39. Дан указатель P1 на первый элемент непустого двусвязного списка. Продублировать в списке все элементы с нечетными значениями (новые элементы добавлять перед существующими элементами с такими жезначениями) и вывести указатель на первый элемент преобразованногосписка.Dynamic40.
Дан указатель P1 на первый элемент непустого двусвязного списка. Продублировать в списке все элементы с нечетными значениями (новые элементы добавлять после существующих элементов с такими жезначениями) и вывести указатель на последний элемент преобразованного списка.Dynamic41. Дан указатель P0 на один из элементов непустого двусвязного списка. Удалить из списка данный элемент и вывести два указателя:на элемент, предшествующий удаленному, и на элемент, следующий заудаленным (один или оба этих элемента могут отсутствовать; для отсутствующих элементов выводить nil).
После удаления элемента из спискаосвободить память, занимаемую этим элементом.Dynamic42. Дан указатель P1 на первый элемент двусвязного списка, содержащего не менее двух элементов. Удалить из списка все элементы с нечетными номерами и вывести указатель на первый элемент преобразованногосписка. После удаления элементов из списка освобождать память, которую они занимали.Dynamic43. Дан указатель P1 на первый элемент непустого двусвязного списка.
Удалить из списка все элементы с нечетными значениями и вывестиуказатель на первый элемент преобразованного списка (если в результатеудаления элементов список окажется пустым, то вывести nil). После удаления элементов из списка освобождать память, которую они занимали.Динамические структуры данных125Dynamic44. Дан указатель P0 на один из элементов непустого двусвязногосписка. Переместить данный элемент в конец списка и вывести указатели на первый и последний элементы преобразованного списка. Операциивыделения и освобождения памяти не использовать, поля Data не изменять.Dynamic45. Дан указатель P0 на один из элементов непустого двусвязногосписка.
Переместить данный элемент в начало списка и вывести указатели на первый и последний элементы преобразованного списка. Операциивыделения и освобождения памяти не использовать, поля Data не изменять.Dynamic46. Дано число K (> 0) и указатель P0 на один из элементов непустогодвусвязного списка. Переместить в списке данный элемент на K позицийвперед (если после данного элемента находится менее K элементов, то переместить его в конец списка). Вывести указатели на первый и последнийэлементы преобразованного списка.
Операции выделения и освобожденияпамяти не использовать, поля Data не изменять.Dynamic47. Дано число K (> 0) и указатель P0 на один из элементов непустогодвусвязного списка. Переместить в списке данный элемент на K позицийназад (если перед данным элементом находится менее K элементов, то переместить его в начало списка). Вывести указатели на первый и последнийэлементы преобразованного списка.
Операции выделения и освобожденияпамяти не использовать, поля Data не изменять.Dynamic48. Даны указатели PX и PY на два различных элемента двусвязного списка (элемент с адресом PX находится в списке перед элементом садресом PY , но не обязательно рядом с ним). Поменять местами данныеэлементы и вывести указатель на первый элемент преобразованного списка. Операции выделения и освобождения памяти не использовать, поляData не изменять.Dynamic49◦ . Дан указатель P1 на первый элемент непустого двусвязного списка. Перегруппировать его элементы, переместив все элементы с нечетными номерами в конец списка (в том же порядке) и вывести указатель напервый элемент преобразованного списка.
Операции выделения и освобождения памяти не использовать, поля Data не изменять.Dynamic50. Дан указатель P1 на первый элемент непустого двусвязного списка. Перегруппировать его элементы, переместив все элементы с нечетными значениями в конец списка (в том же порядке) и вывести указатель на126М. Э. Абрамян. Электронный задачник Programming Taskbook 4.6первый элемент преобразованного списка. Операции выделения и освобождения памяти не использовать, поля Data не изменять.Dynamic51. Даны два непустых двусвязных списка и связанные с ними указатели: P1 и P2 указывают на первый и последний элементы первогосписка, P0 — на один из элементов второго.
Объединить исходные списки,поместив все элементы первого списка (в том же порядке) перед даннымэлементом второго списка, и вывести указатели на первый и последнийэлементы объединенного списка. Операции выделения и освобожденияпамяти не использовать.Dynamic52. Даны два непустых двусвязных списка и связанные с ними указатели: P1 и P2 указывают на первый и последний элементы первогосписка, P0 — на один из элементов второго.