Помогите с задачкой, вообщем тема Однонаправленные списки, динамические данные.
вот такое вот задание: Слово, заканчивающееся точкой, вывести в обратном порядке (используя рекурсию).
есть указания, что для организации однонаправленного списка использовать типы ввида:
Type Ukaz=^Zveno;
Zveno=Record
Next:Ukaz;
Info:char;
end;
Помогите пожалйста, с чего начать хотя бы, да и нейпойму куда здесь рекурсию прекрутить то(
Можно посмотреть, например, http://it.kgsu.ru/PasDin/oglav.html.
Просто интересно, какую оценку вы получили на вступительном экзамене по русскому языку?
Пример создания линейного однонаправленного списка без заглавного элемента в прямом порядке следования:
type Ss=^elem;
elem=record
inf:byte;
next:ss
end;
var p,q,l:ss;
{i,E,E1,N:byte;}
begin
write('Vvedi kolichestvo elementov ');
readln(N);
write('Vvedi elementi spiska ');
new(p); {выделяем ячейку памяти для нового элемента и устанавливаем на нее указатель p}
read(p^.inf); {считываем с клавиатуры значение для этого элемента и заносим его в информационную часть}
l:=p; {устанавливаем ссылку l на ту же ячейку памяти, что и p }
for i:=1 to n-1 do {добавление в список оставшихся элементов}
begin
new(q);
read(q^.inf);
l^.next:=q; {связываем последний элемент списка с созданным элементом}
l:=q {переустанавливаем ссылку l на ячейку q}
end;
l^.next:=nil; {ссылочной части последнего элемента присваиваем пустую ссылку nil}
...
Здесь каждый элемент списка содержит информационную часть - число типа byte и ссылочную - ссылку на следующий элемент. Список определяется ссылкой на первый элемент p. Эту ссылку не стоит ни двигать, ни уничтожать, иначе вы потеряете доступ к списку.
Список - структура данных последовательного доступа, т.е. чтобы обратиться к какому-либо элементу списка, отличному от первого, мы должны последовательно пройти по ссылкам всех предыдущих элементов.
Пример: Вставить в список после указанного элемента заданное число.
type Ss=^elem;
elem=record
inf:byte;
next:ss
end;
var p,q,l:ss;
i,E,E1,N:byte;
begin
write('Vvedi kolichestvo elementov ');
readln(N);
write('Vvedi elementi spiska ');
new(p);
read(p^.inf);
l:=p;
for i:=1 to n-1 do
begin
new(q);
read(q^.inf);
l^.next:=q;
l:=q
end;
l^.next:=nil;
write('Vvedi element iz spiska i celoe chislo ');
readln(E,E1);
q:=p;
for i:=1 to N do
if q^.inf=E then
begin
new(l);
l^.inf:=E1;
l^.next:=q^.next;
q^.next:=l;
q:=l^.next
end
else q:=q^.next;
q:=p;
writeln('Poluchennii spisok:');
while q<>nil do
begin
write(q^.inf,' ');
q:=q^.next
end
end.
[quote name='Julia' date='16.12.2007, 12:18' post='8680']
Просто интересно, какую оценку вы получили на вступительном экзамене по русскому языку?
[quote]
пасипа за кот) осень благотарен. цьмоки
Неругайсо насяльника ма, рафшана плохо говарить по русски.
За такое отношение к русскому языку даже в математическом форуме можно получить «бан».
Все. Хватит. Идите в другую тему.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)