Динамические списки - некорректный вывод - Pascal
Формулировка задачи:
Здравствуйте господа. Спасибо вашему форуму и всем в частности, многое почерпнул тут и не возникало необходимости задавать "глупые вопросы". Но мой черёд настал, поведайте мне, что я делаю не так, списки L1 И L2 выводятся только последними элементами.
type Link = ^Node; Node = record X: integer; Next: Link; end; var L, l1, l2: link; procedure input(var L: link); var p: link; begin write('Введите значения через пробел: '); if eoln then {интересная функция - end of line} L := nil else begin new(p); read(p^.x); L := p; while not eoln do begin new(p^.next); read(p^.next^.x ); p := p^.next end; p^.next := nil end; readln end; procedure output(L: link); begin write('Список L => '); while L <> nil do begin write(L^.x); L := L^.next end; writeln end; procedure split(L: link; var L1, L2: link); var k: link; begin L1 := nil;L2 := nil; while L <> nil do begin new(k); k^.x := L^.x; if odd(L^.x) then begin if L1 <> nil then L1^.next := k; L1 := k; end else begin if L2 <> nil then L2^.next := k; L2 := k; end; L := L^.next; end; end; begin input(L); output(L); {dispose(L);} split (L, L1, L2); output (L1); output (L2); end.
Написать функцию, которая использует исходный список L и создает два новых списка L1 и L2. L1 содержит нечетные числа, а L2 – четные
делал по образу и подобию, но в процедуре split я явно ошибся
Решение задачи: «Динамические списки - некорректный вывод»
textual
Листинг программы
function HeapFunc(Size: Word): Integer; far; begin HeapFunc:=1; end; var p: Pointer; begin HeapError:=@HeapFunc; WriteLn('MemAvail: ',MemAvail,', MaxAvail: ',MaxAvail); repeat GetMem(p,1024*8) until p=nil; WriteLn('MemAvail: ',MemAvail,', MaxAvail: ',MaxAvail); end.
Объяснение кода листинга программы
- Функция
HeapFunc
принимает один параметрSize
, который представляет собой размер динамического списка, и возвращает целочисленное значение, представляющее ошибку в случае, если размер списка превышает доступное количество памяти. - Переменная
HeapFunc
инициализируется значением 1, которое, вероятно, является идентификатором функции или обработчика ошибок. - Переменная
p
инициализируется указателем на функциюHeapFunc
. - Переменная
HeapError
инициализируется адресом функцииHeapFunc
. - Выводится сообщение с информацией о доступной и максимальной доступной памяти.
- Запускается цикл
repeat
, который запрашивает у системы память до тех пор, пока не будет выделено 1024 байт памяти. - После каждого выделения памяти выводится сообщение с информацией о доступной и максимальной доступной памяти.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д