Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Лабораторная работа «Списки», задание №9.

Визуализация метода | Характеристики метода | Визуализация метода | Характеристики метода | Визуализация метода | Визуализация метода | Характеристики метода |


Читайте также:
  1. C) Работа над когнитивными структурами и неправильной атрибуцией
  2. II. Прочитайте текст и выполните задание на понимание текста.
  3. IV. Практическая работа.
  4. IV. Работа над новым материалом.
  5. IV. Работа с текстами.
  6. IV. Словарная работа.
  7. V Вам не нужно принимать решения, начислять проценты и работать с должниками- Это наша работа

Задание.

1. Проверка списка на пустоту.

2. Напечатать список в обратном порядке.

3. Определить имеется ли в списке два подряд элемента одинаковых.

Описание алгоритма решения.

В первом задании мы создаём список при помощи класса с полями дата – текущее значение в списке и next – это ссылка на следующий элемент. Затем проверяем при помощи Assert(head <> nil) пустой ли список. Во втором задании перебираем элементы при помощи конструкции while last <> nil do и last:= last.prev с последующим выводом на экран. В третьем задании перебираем элементы и сравниваем значения полей data текущего элемента и следующего:Result:= head.data; If (Result = head.data.next) для поиска одинаковых значений, когда находим выходим при помощи exit.

Листинг программы.

{Сформировать линейный односвязный список, состоящий из трёх целых чисел 12, 34 и 56 в указанном порядке.}

type

N1<T> = class

data: Char;

next: N1<Char>;

//prev: N1< Char >;

 

constructor(data: Char; next: N1< Char >);

begin

Self.data:= data;

//Self.prev:= prev;

Self.next:= next;

end;

end; {конец списка}

 

function CreateList(n: Char): N1< Char >;

begin

Assert(n > 0);

Writeln('Введите элемент');

var x:= ReadChar;

var head:= new N1< Char >(x, nil);

var Start:= head;

for var i:= 1 to n - 1 do

begin

Writeln('Введите элемент');

Read(x);

head.next:= new N1< Char >(x, nil);

head:= head.next;

end;

Result:= Start;

end;

{ Дана ссылка на первый элемент линейного списка. Вывести его содержимое.}

procedure Print(head: N1< Char >);

begin

Writeln('Список имеет вид');

Assert(head <> nil); // проверка списка на не пустоту!!! Задание 1.

while head <> nil do

begin

Writeln(head.data);

head:= head.next;

end;

end;

begin

var t:= CreateList(12, 34, 56);

Print(t);

end.

{ Дана ссылка на последний элемент линейного двусвязного списка. Вывести его содержимое в обратном порядке.}

procedure PrintBack(last: N1< Char >);

begin

Writeln('Список: ');

while last <> nil do

begin

Writeln(last.data);

last:= last.prev;

end;

end;

 

{Определяем есть ли в списке два подряд одинаковых элемента}

function Equals(head: N1< Char >): boolean;

begin

Assert(head <> nil);

while head <> nil do

begin

Result:= head.data;

// сравниваем текущее значение элемента списка со следующим

If (Result = head.data.next)

begin

writeln(‘Мы нашли одинаковые элементы, они равны - ’, head.data);

exit;

end;

head:= head.next;

end;

end;


Дата добавления: 2015-08-17; просмотров: 52 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Вставка| Лабораторная работа «Деревья», задание №6.

mybiblioteka.su - 2015-2024 год. (0.005 сек.)