68988

Операції над динамічними рядками

Лекция

Информатика, кибернетика и программирование

Розглянемо процедуру шукання заданого елемента. Попередньо опишемо тип, який відображає рядок символів як динамічну структуру. Складемо логічну функцію виявлення заданого символу в заданому динамічному рядку. Передбачимо як побічний ефект логічної функції шукання елемента вказівку...

Украинкский

2014-09-28

38 KB

1 чел.

Лекція № 17

Тема: Операції над динамічними рядками

План заняття:

  1.  Пошук заданого елементу
  2.  Вилучення заданого елемента з рядка

Пошук заданого елемента.

Розглянемо процедуру шукання заданого елемента. Попередньо опишемо тип, який відображає рядок символів як динамічну структуру. Складемо логічну функцію виявлення заданого символу в заданому динамічному рядку. Передбачимо як побічний ефект логічної функції шукання елемента вказівку на ланку, яка відповідає першому входженню заданого символу.

program Form2;

type

Link=^LRiad;

LRiad=Record

Elem: Char;

Next: Link;

end;

function SeekElem(Rjad:Link; Elm:char; var Res:Link): Boolean;

var Rb: Link;

begin

SeekElem:=False;

Res:=nil;

Rb:=Rjad^.Next;

while (Res=nil) and (Rb<>nil) do

if Rb^.EIem=Elm then

begin

SeekElem:=True;

Res:=Rb;

end

else Rb:=Rb^.next;

end;

begin

end.

Параметрами функції SeekElem є: вказівна змінна Rjad, що вказує на рядок символів; Elm, що містить шуканий елемент -символ; Res - вказівна змінна-результат, вказує на ланку, що містить шуканий елемент; Rb - робоча змінна вказівного типу.

Вилучення заданого елемента з рядка.

Описуючи цю процедуру, будемо задавати елемент, який треба вилучити, за допомогою вказівки на ту ланку ланцюга, після якої є елемент, що його потрібно вилучити.

Схематично процедуру вилучення зобразимо так. Нехай вихідний ланцюг є (опишемо фрагмент) таким, як показано на рис. 1.

Рис. 1. Фрагмент динамічного рядка.

Вилучення елемента В треба організувати так, щоб вказівка з ланки А була на ланку С. оминаючи ланку з елементом В (рис. 2).

Рис. 2. Вилучення ланки динамічного рядка.

Описуючи процедуру вилучення заданого елемента з рядка, передбачимо знищення всієї ланки, що містить цей елемент:

program Form3;

type

Link=^LRiad;

LRiad=record

Elem: Char;

Next: Link;

end;

procedure DelElem(Lanka: Link);

var Rb: Link;

begin

Rb:=Lanka^.Next;

Lanka^.Next:=Lanka^.Next^.Next;

dispose(Rb);

end;

begin

end.

Знищуємо ланку, що містить шуканий елемент, для економії пам'яті.


 

А также другие работы, которые могут Вас заинтересовать

70827. Дослідження аналогової інтегральної мікросхеми 597 KB
  Експериментальне визначення параметрів не потребує знання схеми і може бути здійснено як для будь-якого чотириполюсника шляхом вимірювання струмів і напруг вхідного і вихідного сигналів.
70828. Счетчик импульсов 130 KB
  Цель: исследование работы счетчика импульсов. Приборы: модель счетчика импульсов СИ блок питания на 5В БП5 соединительные провода. Подсоединить провода питания 5В к выходу БП5 и к входу модели счетчика импульсов СИ. Однократным нажатием на кнопку Счет прибора СИ подаем импульс на вход счетчика.
70829. Децимация и интерполяция 104 KB
  Выполнение процедуры децимации (уменьшения частоты дискретизации в заданное целое число раз) приводит к уменьшению частоты дискретизации исходной последовательности. В процессе децимации исходная последовательность обрабатывается НЧ фильтром, после чего производится выборка с необходимой частотой.
70830. Функции реализуемые АЛУ 112 KB
  Изучить назначение и состав узла АЛУ на примере ИМС К155ИПЗ и К 561 ИПЗ. В состав различных серий микросхем лежащих в основе МП входят стандартные узлы арифметическо-логических устройств АЛУ например К 155 ИПЗ К 561 ИПЗ. Кроме того имеются вход Р0 и выход Р сигналов переноса...
70831. Изучение видов сигналов с помощью программной среды MatLab 167.5 KB
  Функция у = rectpuls(t) формирует прямоугольный импульс единичной амплитуды для заданной в векторе t последовательности отсчетов времени. Генерируется импульс с шириной 1, центрированный относительно t=0.
70834. Обработка результатов измерений. Оценка погрешностей 494 KB
  Принято различать приборные погрешности обусловленные точностью измерительного прибора и его настройки и погрешности случайные вызванные неконтролируемыми внешними воздействиями может быть даже воздействием самого прибора. Причиной появления погрешности может быть и несовершенство принятой модели.