Главная » Статьи » Рефераты » Без категории |
Очередь разумнее всего моделировать, отобразив её на двунаправленный кольцевой список. В этом случае в заглавном звене будет присутствовать информация как об указателе на голову, так и на хвост очереди. Выделим типовые операции над очередями: проверка, пуста ли очередь; очистка очереди. Вот модуль, содержание которого составляют реализованные типовые операции над очередями. {Язык Pascal} Unit Spisok2; Interface Type BT = LongInt; U = ^Zveno; Zveno = Record Inf : BT; N, P: U End; Implementation Procedure V_Och; Begin Vsp^.Inf := X; End; Procedure Iz_Och; Begin x:=first^.inf; then begin first:= nil end begin Vsp := First; First := First^.N; First^.P := Vsp^.P; Dispose(Vsp) end End; Procedure Ochistka; Begin While Not Pust(First) Do Iz_Och(First, Vsp) End; Begin Pust := First = Nil End; Begin End. #include <conio.h> #include <stdlib.h> #include <time.h> typedef long BT; BT Inf; U *N, *P; U *V_Och(U *First, BT X) { U *Vsp; Vsp->Inf=X; U *Iz_Och(U *First, BT &X) { U *Vsp; X=First->Inf; int Pust(U *First) U *Ochistka(U *First) { BT Vsp; } Пример. Напечатать в порядке возрастания первые n натуральных чисел, в разложение которых на простые множители входят только числа 2, 3, 5. Алгоритм решения. Введем три очереди x2, x3, x5, в которых будем хранить элементы, которые соответственно в 2, 3, 5 раз больше напечатанных, но еще не напечатаны. Рассмотрим наименьший из ненапечатанных элементов; пусть это x. Тогда он делится нацело на одно из чисел 2, 3, 5. x находится в одной из очередей и, следовательно, является в ней первым (меньшие напечатаны, а элементы очередей не напечатаны). Напечатав x, нужно его изъять и добавить его кратные. Длины очередей не превосходят числа напечатанных элементов. {Язык Pascal} Program Example; Uses Spisok2; Begin End; Begin Min := Vsp End; Begin X2 := Nil; X3 := Nil; X5 := Nil; For I := 1 To N Do Begin End; WriteLn End. #include "spis2.cpp" U * X2, *X3, *X5; { BT X; long I, N; X2 = NULL; X3 = NULL; X5 = NULL; cout << "Сколько чисел напечатать? "; cin >> N; for (I=1;I<=N; I++) } } void PrintAndAdd(BT T) } BT Min (BT A, BT B, BT C) { BT vsp; } | |
Просмотров: 309 | |
Всего комментариев: 0 | |