Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi_p5 ОЧЕРЕДЬ!!!!.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
422.91 Кб
Скачать

L.Next d

Работа приложения должна начинаться с нажатия на кнопку «Создать очередь». После появления сообщения «Очередь создана», нужно ввести значение d (в данном случае введено число 100) и нажать на кнопку «Вставка после 1 элемента». Для просмотра преобразованного списка нужно нажать кнопку «Показать очередь».

Задача 3. Создать очередь из 20 элементов, информационные поля которой содержат случайные числа из интервала [-30, 30]. Вставить в список новый элемент с информационным полем 100 за каждым отрицательным числом.

Создание очереди:

procedure TForm1.Button1Click(Sender: TObject);

var p, q : link; i : byte;

begin

randomize;

new(L);

L.val:= -30 + random(61);

p:=L;

for i:=2 to 20 do

begin

new(q);

q.val:= -30 + random(61);

p.next:=q;

p:=q

end;

p.next:=nil;

showmessage('Очередь создана')

end;

Вставка в список нового элемента с информационным полем 100 за каждым отрицательным числом:

procedure TForm1.Button3Click(Sender: TObject);

var w, r : link;

begin

w:=L;

while w<>nil do

begin

if w.val<0 then

begin

new(r); r.val:=100; r.next:=w.next; w.next:=r;

w:=r.next

end

else w:=w.next

end;

end;

Процедура обработки события нажатия на кнопку «Показать очередь» такая же, как в задаче 1.

Работа приложения должна начинаться с нажатия на кнопку «Создать очередь». После появления сообщения «Очередь создана», нужно нажать кнопку «Показать очередь», чтобы увидеть созданный список. Затем нажать кнопку «Вставка элемента». Для просмотра преобразованного списка нужно нажать кнопку «Показать очередь».

Задача 4. Создать очередь, информационные поля которой содержат строки из файла file2.txt . Удалить из списка второй элемент.

Содержимое файла file2.txt: file

edit

search

view

project

run

component

database

tools

window

help

Описание типа динамической структуры будет иметь вид:

type link = ^elem;

elem = record

val : string;

next : link

end;

Создание очереди:

procedure TForm1.Button1Click(Sender: TObject);

var p, q : link; f : textfile;

begin

assignfile(f, ' file2.txt '); reset(f);

new(L);

readln(f, L.val);

p:=L;

while not eof(f) do

begin

new(q); readln(f, q.val); p.next:=q; p:=q

end;

p.next:=nil;

showmessage('Очередь создана')

end;

Выведение информационных полей списка в столбик в метку Label1:

procedure TForm1.Button2Click(Sender: TObject);

var p : link;

begin

label1.Caption:='';

p:=L;

while p<>nil do

begin

label1.Caption:=label1.Caption + p.val + #13; p:=p.next

end;

end;

Удаление второго элемента списка:

procedure TForm1.Button3Click(Sender: TObject);

var z : link;

begin

z:=L.next; L.next:=z.next; dispose(z)

end;

Удаление элемента, осуществляемое этой процедурой, схематически можно изобразить следующим образом:

L

z=L.next

z.next

Задача 5. Создать очередь из 20 элементов, информационные поля которой содержат случайные числа из интервала [-40, 40]. Удалить из списка все отрицательные числа.

В предыдущей задаче мы научились удалять элемент, стоящий за данным элементом (в задаче 4 мы удаляли 2ой элемент, как элемент, стоящий за 1ым элементом списка). Чтобы применить этот алгоритм в задаче 5, мы должны учесть, что отрицательный элемент может стоять в списке первым. Чтобы сделать первый элемент списка не первым, используют метод фиктивного элемента. Этот метод заключается в том, что перед первым элементом списка добавляют элемент с пустым информационным полем и ссылочным полем, содержащим адрес первого элемента списка ( L ).

procedure TForm1.Button3Click(Sender: TObject);

var w, r, z : link;

begin

new(r); r.next:=L;

w:=r;

while w.next<>nil do

if w.next.val<0 then

begin z:=w.next; w.next:=z.next; dispose(z) end

else w:=w.next;

L:=r.next

end;

В данной процедуре r – фиктивный элемент, w очередной элемент списка. Мы просматриваем все элементы w до предпоследнего и проверяем, является ли элемент, стоящий за w (w.next) отрицательным. Если да, то мы его удаляем. В заключение первый элемент нового списка получает имя L (если этого не сделать, список может остаться без ″головы″ в случае, когда первый элемент исходного списка – отрицательное число).

Задачи

Задача 6. Создать очередь, информационные поля которой содержат числа из текстового файла file1.txt. Вставить в конец списка (после последнего элемента) новый элемент с информационным полем d.

Задача 7. Создать очередь, информационные поля которой содержат числа из текстового файла file1.txt. Вставить в начало списка (перед первым элементом) новый элемент с информационным полем d.

Задача 8. Создать очередь, информационные поля которой содержат числа из текстового файла file1.txt. Вставить новый элемент с информационным полем d после 9ого элемента списка.

Задача 9. Создать очередь из 20 элементов, информационные поля которой содержат случайные числа из интервала [-50, 50]. Удалить из списка последний элемент.

Задача 10. Создать очередь, информационные поля которой содержат числа из текстового файла file3.txt. Удалить из списка за каждым вхождением элемента с информационным полем, равным d, один элемент, если он отличен от d. Содержимое файла file3.txt:

26 11 -8 34 2

41 -5 11 11 -37

-15 11 29 62 44

Задача 11. Создать очередь, информационные поля которой содержат строки из файла file4.txt (Список фамилий учащихся). Удалить из списка фамилии, начинающиеся с буквы ′ С ′.

Содержимое файла file4.txt: Семёнов

Антонова

Кузнецов

Самойлов

Егорова

Колесников

Сидоров

Смирнова

Петрова

Сафонов

Указание. Использовать метод фиктивного элемента.

Задача 12*. Создать очередь, информационные поля которой содержат строки из файла file4.txt (Список фамилий учащихся). Удалить из списка первую фамилию, начинающуюся с буквы ′ К ′. (Учесть, что такая фамилия может оказаться первой в списке.)

Указание. Использовать метод фиктивного элемента.

Задача 13*. Создать очередь, информационные поля которой содержат строки из файла file5.txt (Список фамилий учащихся, упорядоченный по алфавиту). Вставить в этот список новую фамилию с сохранением порядка.

Провести тестирование проекта для следующих исходных данных:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]