Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Выполнение операций над списковыми структурами



Цель задания:

1. Ознакомление с возможностями представления строк символов в виде списков.

2. Закрепление навыков выполнения операций над списками.

Постановка задачи:

Ввести с клавиатуры строку символов, формируя из ее элементов однонаправленный список. Обработать список согласно конкретному варианту. Распечатать результат.

Вариант задания:

Поменять местами первый символ и символ, стоящий посередине строки;

{Представление строк символов в виде списков}

Program T853;

Uses CRT;

Type

PListHead=^TList;

TList=Record

Sym:Char;

Next:PListHead;

End;

Var

str1, str2:String;

P:PListHead; {указатель нa голову списка}

Procedure InitString;

Begin

WriteLn('Введите строку символов');

ReadLn(str1);

End;

{формируем из строки символов однонаправленный список}

Procedure ConvertStringToList;

Var

i:integer;

Head,P1,P2:PListHead;

Label

Exits;

Begin

P:=nil;

P1:=nil;

P2:=nil;

{создаем и заполняем голову списка и следующий за ней элемент}

Head^.Sym:=str1[1];

New(P1);

P1^.Sym:=str1[2];

Head^.Next:=P1;

{создаем и заполняем остальные элементы}

For i:=3 to 255 Do Begin

If Ord(str1[i])=0 Then Goto Exits;

New(P2);

P2^.Sym:=str1[i];

P1^.Next:=P2;

P1:=P2;

End;

Exits:

P2^.Next:=nil;

P:=Head;

End;

Procedure EditList;

var

i,i1,i2:integer;

P1,P2,P3,PMiddle,PEnd:PListHead;

Begin

P1:=P;

i1:=-1; i2:=0;

While P1^.Next<>nil Do Begin {находим общее количество элементов(i1)}

PEnd:=P1; {PEnd - предпоследний элемент}

P1:=P1^.Next; {P1 - последний элемент}

inc(i1);

End;

i2:=i1 div 2; {порядковый номер элемента в середине списка}

P2:=P;

For i:=0 to i2 Do Begin

PMiddle:=P2; {PMiddle - элемент, предшествующий середине списка}

P2:=P2^.Next; {P2 - середина списка}

End;

{перестановка ссылок}

PMiddle^.Next:=P1;

PEnd^.Next:=P2;

P3:=P2^.Next;

P2^.Next:=P1^.Next;

P1^.Next:=P3;

End;

{*************** Процедура вывода на печать списка *********************}

Procedure Result;

var

P1:PListHead;

i:integer;

Begin

p1:=P;

i:=1;

{ формирование выходной строки }

Repeat

str2[0]:=Chr(i); {устанавливаем новую длину строки}

str2[i]:=P1^.Sym; {присваиваем значение элементу строки}

inc(i);

P1:=P1^.Next;

Until P1=nil;

WriteLn(' _______ Результат работы программы ___________ ');

WriteLn;

WriteLn('Входная строка символов: ',str1);

WriteLn('Выходная строка символов: ',str2);

WriteLn;

End;

Begin

InitString;

ConvertStringToList;

EditList;

Result;

WriteLn('Press any key...');

Repeat Until KeyPressed;

End.

Результат работы программы:

Введите строку символов произвольной длины ABCDEFG   Укажите какой элемент поменять местами с элементом в середине строки: цифра "1" - первый, цифра "2" - последний.   _______ Результат работы программы ___________   Входная строка символов: ABCDEFG Выходная строка символов: DBCAEFG   Press any key...

Варианты заданий.

1) удалить два первые символа строки;

2) удалить последние три символа строки;

3) удалить все буквы К;

4) удвоить все символы *;

5) добавить в конец строки слово END;

6) поменять местами первый и последний символы строки;

7) поменять местами первый и второй символы строки;

8) поменять местами первый и предпоследний символы строки;

9) подсчитать в строке число букв А и В, и если букв А больше, чем букв В, то удалить в строке все символы В;

10) удалить все символы, равные первому символу строки;

11) подсчитать число символов в строке, и если число нечетное, то удалить символ, стоящий посередине строки;

12) поменять местами второй и предпоследний символы строки;

13) удалить два последние символа строки;

14) удалить все символы строки, повторяющиеся более двух раз;

15) устранить дублирование символов;

16) добавить в начало строки слово BEGIN;

17) увеличить количество символов на 5;

18) подсчитать число символов в строке, и если число четное, то добавить в конец строки один символ;

19) удалить все буквы Д;

20) добавить в конец строки символ, равный первому символу строки;

21) удалить из строки символы, порядковый номер которых кратен 3;

22) удалить из строки все символы с нечетным порядковым номером;

23) удалить из строки символы с четным порядковым номером;

24) удалить из строки символы, порядковый номер которых является простым числом;

25) поменять местами первый символ и символ, стоящий посередине строки;





Дата публикования: 2015-02-22; Прочитано: 369 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...