Примеры задач, решаемых с помощью списка

Задание. Просмотрите предложенные решения задач и приготовьтесь объяснить алгоритм их решения учителю. Если необходимо, то наберите программы на компьютере и просмотрите их действие.

Задача 1. Проверить есть ли и сколько раз встречается список М1 в списке М2.

Program BaranovA;

Uses

Crt;

Type

EXS = ^ S;

S = Record

Data : integer;

Next : EXS;

End;

Var

u, x, m1, m2 : EXS;

i, Kol : integer;

Procedure Poisk(Var x1, x2 : EXS);

Var

m3, m4 : EXS;

Begin

Kol := 0;

m3 := m1;

m4 := m2;

while m4 <> Nil do

begin

if m4^.Data = m3^.Data

then

begin

m3 := m3^.Next;

m4 := m4^.Next;

if m3 = Nil

then

begin

Kol := Kol+1;

m3 := m1;

end;

end;

else

begin

m3 := m1;

m4 := m4^.Next;

end;

end;

End;

Procedure Init (Var u : EXS);

Var

y : EXS;

Digit : integer;

Begin

writeln('Введите список. Конец ввода – 0');

u := Nil;

read(Digit);

while Digit <> 0 do

begin

new(y);

y^.Next := Nil;

y^.Data := Digit;

if u = Nil

then

u := y

else

x^.Next := y;

x := y;

read(Digit);

end;

writeln;

End;

Procedure Print(X : EXS);

Begin

while X <> Nil do

begin

write(X^.Data : 5);

X := X^.Next;

end;

readln;

writeln;

End;

Begin

ClrScr;

Init(m1);

Init(m2);

writeln('***Список 1***');

Print(m1);

writeln('***Список 2***');

Print(m2);

Poisk(m1, m2);

writeln('Список 1 встречается в списке 2 ', Kol, ' раз(а)');

readln;

End.

Задача 2. Из текстового файла, состоящего из строк, сформировать список, запросить слово и удалить это слово из списка.

Program ;

Uses

Crt;

Type

EXS = ^ Spisok;

Spisok = record

Data : string;

Next : EXS;

end;

Var

Golova_Spiska, Golova_Spiska_Udalen_ : EXS;

F : text;

S, St : string;

Procedure Smotr(x : EXS);

Begin

TextColor(LightRed);

write('Ваш список...');

while x <> Nil do

begin

writeln (x^.Data,' ');

x := x^.Next;

end;

End;

Procedure reading;

Begin

reset (F);

writeln('Ваш файл...');

while no Eof(F) do

begin

readln (F, St);

writeln (St);

end;

close (F);

End;

Procedure CreateFile;

Begin

writeln('Создание файла');

write('Введите имя файла...');

readln(S);

assign (F, S);

rewrite('Вводите текст в файл (окончание ввода - <Enter>');

repeat

readln(St);

writeln (F, St);

until St = '';

write('Файл создан');

close (F);

readln;

End;

Procedure Proverka;

Var

x, y, u : EXS;

i : integer;

Begin

reset (F);

while not Eof (F) do

begin

readln (F, St[i]);

while i < Length (St) do

begin

new (x);

x^.Next := Nil;

if (St[i] <> '') or (St[i] <> St[Length(St)])

then

x^.Data := x^.Data + St[i];

if u = Nil

then

u := x

else

y^.Next := x;

y := x;

end;

end;

close (F);

Smotr (u);

End;

Begin

ClrScr;

TextColor (White);

CreateFile;

Proverka;

End.

 








Дата добавления: 2015-05-16; просмотров: 577;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.