М. Э. Абрамян Programming Taskbook


Динамические структуры данных



Pdf көрінісі
бет52/66
Дата11.04.2023
өлшемі0,52 Mb.
#81497
1   ...   48   49   50   51   52   53   54   55   ...   66
Байланысты:
Задачник Абрамяна

Динамические структуры данных
Данная группа не включена в варианты задачника для языков Visual Basic
и C#.
Все числа, упоминаемые в заданиях данной группы, являются целыми.
Все указатели имеют тип PNode и указывают на записи типа TNode. Типы
PNode и TNode описаны в варианте задачника для языка Pascal следующим
образом:
type
PNode = ^TNode;
TNode = record


Динамические структуры данных
111
Data: integer;
Next: PNode;
Prev: PNode;
end;
Аналогично описываются эти типы в варианте задачника для языка С:
struct TNode
{
int Data;
TNode* Next;
TNode* Prev;
};
typedef TNode* PNode;
Во вводных заданиях Dynamic1–Dynamic2, а также в заданиях на стек и
очередь (Dynamic3–Dynamic28) при работе с записями типа TNode использу-
ются только поля Data и Next (см. задание Dynamic1); в заданиях на списки
(Dynamic29–Dynamic80) используются все поля записи TNode (см. задание
Dynamic29).
Так как переменные типа «указатель» предназначены для хранения ад-
ресов, в формулировках заданий слова «указатель» (на элемент данных) и
«адрес» (элемента данных) используются как синонимы.
Для обозначения нулевого указателя в формулировках заданий использу-
ется имя
NIL
.
Dynamic1. Дан адрес P
1
записи типа TNode, содержащей поле Data (целого
типа) и поле Next (типа PNode — указателя на TNode). Эта запись связана
полем Next со следующей записью того же типа. Вывести значения полей
Data обеих записей, а также адрес P
2
следующей записи.
Dynamic2

. Дан адрес P
1
записи типа TNode. Эта запись связана полем Next
со следующей записью того же типа, она, в свою очередь, — со следую-
щей, и так далее до записи, поле Next которой равно
NIL
(таким образом,
возникает цепочка связанных записей). Вывести значения полей Data для
всех элементов цепочки, длину цепочки (то есть число ее элементов) и
адрес ее последнего элемента.


112
М. Э. Абрамян. Электронный задачник Programming Taskbook 4.5
Стек
В заданиях Dynamic3–Dynamic13 структура «стек» (stack) моделируется
цепочкой связанных узлов-записей типа TNode (см. задание Dynamic2). Поле
Next последнего элемента цепочки равно
NIL
Вершиной стека (top) считает-
ся первый элемент цепочки. Для доступа к стеку используется указатель на
его вершину (для пустого стека данный указатель полагается равным
NIL
).
Значением элемента стека считается значение его поля Data.
Dynamic3

. Дано число и указатель P
1
на вершину непустого стека. Доба-
вить элемент со значением в стек и вывести адрес P
2
новой вершины
стека.
Dynamic4. Дано число (> 0) и набор из чисел. Создать стек, содержа-
щий исходные числа (последнее число будет вершиной стека), и вывести
указатель на его вершину.
Dynamic5

. Дан указатель P
1
на вершину непустого стека. Извлечь из стека
первый (верхний) элемент и вывести его значение D, а также адрес P
2
новой вершины стека. Если после извлечения элемента стек окажется
пустым, то положить P
2
=
NIL
. После извлечения элемента из стека осво-
бодить память, занимаемую этим элементом.
Dynamic6. Дан указатель P
1
на вершину стека, содержащего не менее деся-
ти элементов. Извлечь из стека первые девять элементов и вывести их
значения. Вывести также адрес новой вершины стека. После извлечения
элементов из стека освобождать память, которую они занимали.
Dynamic7. Дан указатель P
1
на вершину стека (если стек пуст, то P
1
=
NIL
).
Извлечь из стека все элементы и вывести их значения. Вывести также ко-
личество извлеченных элементов (для пустого стека вывести 0). После
извлечения элементов из стека освобождать память, которую они занима-
ли.
Dynamic8


Достарыңызбен бөлісу:
1   ...   48   49   50   51   52   53   54   55   ...   66




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет