Pointer77. Даны указатели $$P_1$$ и $$P_2$$ на барьерный и текущий элементы двусвязного списка. Также даны пять чисел. Используя тип TListB (см. задание Pointer74), описать процедуру LBInsertAfter($$L$$, $$D$$), которая вставляет новый элемент со значением $$D$$ после текущего элемента списка $$L$$ ($$L$$ — входной и выходной параметр типа TListB, $$D$$ — входной параметр целого типа). Вставленный элемент становится текущим. С помощью этой процедуры вставить пять данных чисел в исходный список и вывести новый адрес его текущего элемента.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
program Pointer77; type PNode=^TNode; TNode=record Data: Integer; Next: PNode; Prev: PNode; end; TListB=record Barrier,Current:PNode; end; procedure NewListB(var L:TListB); begin new(L.Barrier); L.Barrier.Data:=0; L.Barrier.Next:=L.Barrier; L.Barrier.Prev:=L.Barrier; L.Current:=L.Barrier; end; procedure LBInsertAfter(var L:TListB; D:integer); var temp:PNode; begin new(temp); temp.Data:=D; temp.Prev:=L.Current; temp.Next:=L.Current.Next; L.Current.Next.Prev:=temp; L.Current.Next:=temp; L.Current:=temp; end; var P1,P2:PNode; D,i:integer; a:^Word; L:TListB; begin NewListB(L); P1:=L.Barrier; P2:=L.Current; L.Barrier:=P1; L.Current:=P2; for i:=1 to 5 do begin write('D: '); Readln(D); LBInsertAfter(L,D); end; a:=Addr(L.Current); Writeln('current: ',a^); end. |
Другие задачи из раздела Pointer можно посмотреть здесь.
дана последовательност, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных букв; между соседними словами — запятая, за последним словом — точка . напечатать все слова последователоьности, которые отличны от последнего слова , предварительно преобразовав каждое из них по след правилу: удалить из слова первую букву.Помогите пожалуйста
Решеие разместил здесь: http://coolcode.ru/zadacha-na-stroki/