Головна |
1. Побудова спискузводиться до послідовного додаванню елементів в спочатку порожній список. На порожній список вказує (head = nil). Нехай потрібно створити список слів, що вводяться з клавіатури. Останнє слово в списку - «end».
Type
psp = ^ tsp;
tsp = Record
wd: string; {У нашому прикладі інформаційне по
ле має тип string}
next: psp
End;
Var
head, p: psp;
sl: string;
Begin
New (p);
head: = p;
p ^ .next: = nil;
Readln (sl);
p ^ .wd: = sl;
while sl 'end'
Do begin
Readln (sl);
New (q);
q ^ .wd: = sl;
p ^ .next: = q;
q ^ .next: = nil;
p: = q
End;
End;
2. Перегляд і друк списку.Нехай потрібно написати процедуру Print_Spisok друку елементів списку, створеного в алгоритмі 1.
Procedure Print_spisok;
begin
p: = head;
while p nil
Do begin
writeln ((p ^ .wd);
p: = p ^ .next
End
End;
3. Пошук елемента в списку.Визначити, чи є в списку (алгоритм I) слово «begin» і якщо є, то скільки разів зустрічається. До опису алгоритму 1 додамо: var k: integer;
...
begin
p: = head;
while p nil
Do begin
if p ^ .wd = 'begin'
Then inc (k);
p: = p ^ .next
End;
if k = 0
then writeln ('Такого елемента немає')
else writeln ('Слово', sl, 'зустрічається', k, 'раз')
End;
4. Видалення першого елемента списку.Необхідно: 1) пересунути покажчик head на наступний елемент; 2) звільнити пам'ять; 3) звільнити пам'ять, зайняту видаляється елементом.
Begin
p: = head;
head: = p ^ .next;
Dispose (p);
Print_Spisok
End;
5. Видалення останнього елемента списку.До розділу описів алгоритму 1 додамо допоміжну змінну q типу psp.
begin
p: = head;
q: = p ^ .next;
while q ^ .next nil
ПРОГРАМНІ МОДУЛІ | Структура програмного модуля | Interface | Посилання на модулі | ДИНАМІЧНА ПАМ'ЯТЬ | адресація пам'яті | типізовані покажчики | New (s); | HEAPEND містить адресу кінця купи | New (pt1); New (pt2); Mark (M1); |