Файл: Операции производимые с данными.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 72

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Чаще всего динамические структуры состоят из объектов, которые являются записями с нескольких полей, один или несколько из которых являются ссылками на такой же объект. Таким образом можно составлять цепочки или более сложные структуры объектов, которые ссылаются друг на друга. Размер таких структур ограничивается только объемом свободной памяти и может легко меняться при удалении и создании объектов, что и определило основную область их применения - моделирование нелинейных последовательных структур данных (например, деревьев). Однако, несмотря на почти полное отсутствие недостатков, динамические структуры все же имеют свои минусы. Главный из них - отсутствие наглядности программы, что вызывает значительные трудности при создании особо крупных структур.

Список использованной литературы

  1. Алексеев А., Евсеев Г., Мураховский В., Симонович С. Новейший самоучитель работы на компьютере. М.: ДЕСС КОМ, 2000. – 654 с.
  2. Белоусова Л.И., С.А.Веприк, А.С.Муравка. Сборник задач по курсу информатики. Учебно-методическое пособие.–Мю: Экзамен, 2007. – 412 с.
  3. Бен-Ари М. Языки программирования: Практический сравнительный анализ: Учебник для вузов. - М.: Мир, 2000. - 366 с.
  4. Вирт Н. Алгоритмы и структуры данных. – М.: Мир, 1989. – 562 с.
  5. Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: ДМК, 2000. - 416 с.
  6. Зуев Е. А. Программирование на языке Turbo Pascal 6.0, 7.0 – М.:Веста, Радио и связь, 1993 – 238 с.
  7. Информатика: Учебник/ под ред. Н.В.Макаровой. – М.: Финансы и статистика, 2007. – 768 с.
  8. Кассера В. Turbo Pascal 7.0. М.: Диасофт, 2003 – 356 с.
  9. Коффман Э. Б. Turbo Pascal = Turbo Pascal Web Update.– М.:Вильямс, 2005. – 308 с.
  10. Леонтьев В.П. Новейшая энциклопедия персонального компьютера. – М.: ОЛМА-ПРЕСС, 2008 – 626 с.
  11. Лилитко Е.П. Практикум по программированию. Начальный курс. - Переяславль-Залесский, 2007. – 156 с.
  12. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0 / Под ред. В. П.Тарасенко. — Киев: ВЕК+; М.: Бином Универсал, 2008. – 414 с.
  13. Моргун А. Н. Справочник по Turbo Pascal для студентов.– М.:Диалектика, 2006. – 162 с.
  14. Немнюгин С. А. Turbo Pascal – СПб: Питер, 2003. – 496 с.
  15. Себеста, Роберт У. Основные концепции языков программирования. - М.: Издательский дом «Вильямс», 2001. - 672 с.
  16. Симонович С.В. Информатика. Базовый курс. - Издательство Питер, 2003. – 640 с.
  17. Степанов А.Н. Информатика для студентов гуманитарных специальностей. - Издательство Питер, 2002. – 608 с.
  18. Терминологический словарь по основам информатики и вычислительной техники / А.П. Ершов, Н.М. Шанский, А.П. Окунева, Н.В. Баско. - М.: Просвещение, 2001.
  19. Фаронов В. Turbo Pascal в подлиннике. Полное руководство. – Автор: М.: Мир, 2004. – 1056 c.
  20. Фаронов В. В. Turbo Pascal – СПб.: BHV, 2007.– 268 с.
  21. Фаронов В.В. Turbo Pascal 7.0 Практика программирования М.:КноРус, 2011 – 414 с.
  22. Федоренко Ю. Алгоритмы и программы на Turbo Pascal. – М.: Финансы и статистика, 2001. – 240 с.
  23. Фёдоров М.А. Основы современных компьютерных технологий. – К.: МАУП, 2008. – 595 с.
  24. Фигурнов В.Э. IBM PC для пользователя. – М.: ИНФРА, 2007 – 458с.
  25. Шпак Ю.А. Название: Turbo Pascal 7.0 на примерах. – К.: ЮНИОР, 2003. – 496 с.

Приложения

Приложение А

Листинг программы «Стек»

Program Prim5;

Const NN=5;

Type Uk=^Stek;

Stek = Record

I : Integer;

A : Uk

End;

Var

U1, U2: Uk;

I1, J, J1 : Integer ;

A1, A2, A5, UU : Uk;

Begin

U2 := Nil; I1 := 0;

Writeln;

for J:=1 to NN do begin

New(U1); Write('Введите число : '); Readln(I1);

U1^.I := I1; U1^.A := U2; U2 := U1; end;

A2:=u1;

{Переставим в стеке значения первого и пятого элементов}

{ Запомним значения указателей в соответств. элементах }

UU := U1; //сохраняет указатель на последний элемент стека – число 5

for J:=1 to NN do begin

U2:= U1^.A; J1:=NN-J+1; {Номер элемента}

If J1=1 then A5:=U2 else if J1=5 then A1:=U2; U1:=U2; end;

{Поменяем значения указателей должным образом}

U1:=UU;

For J:=1 to NN do

begin

U2:=U1^.A; J1:=NN-J+1;

if J1=1 then U1^.A := A1 else if J1=2 then begin UU:=U1^.A;U1^.A:=A2; end else if J1=5 then U1^.A:=A5;U1:=U2;

end;

Writeln;

U1:=UU; //после замены значения указывает на последний элемент стека– число 1

Repeat // Вывод элементов стека

Writeln('Элемент стека - ',U1^.I);

U2:=U1^.A;

Dispose(U1); //освобождает память, выделенную под адресацию элемента

U1:=U2;

Until U1=nil;

End.

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

Приложение Б

Листинг программы «Дерево»

uses crt;

Const

{ данный массив-константа }

V : array [1..15] of integer = (10,22,16,11,45,25,25,4,10,7,8,25,10,1,9);

type node=record // запись, которая содержит имя узла, его вес-пометку и метки:правая-левая

name, ves: integer;

left, right: pointer;

end;

var

s,n:integer;

pnt_s,current_s,root: pointer;

pnt,current:^node;

procedure node_search (pnt_s:pointer; var current_s:pointer);

{Poisk uzla po soderzhimomu}

var

pnt_n:^node;

begin

pnt_n:=pnt_s; writeln(pnt_n^.name);

if not (pnt_n^.name=s) then

begin

if pnt_n^.left <> nil then

node_search (pnt_n^.left,current_s);

if pnt_n^.right <> nil then

node_search (pnt_n^.right,current_s);

end

else current_s:=pnt_n;

end;

procedure node_list (pnt_s:pointer);

{Vyvod spiska vseh uzlov dereva}

var

pnt_n:^node;

begin

pnt_n:=pnt_s; writeln(pnt_n^.name);

if pnt_n^.left <> nil then node_list (pnt_n^.left);

if pnt_n^.right <> nil then node_list (pnt_n^.right);


end;

procedure node_25 (pnt_s:pointer);

{Poisk uzla po весу-метке, равной 25}

var pnt_n,l,r:^node;

begin

pnt_n:=pnt_s;

if pnt_n^.left<>nil then

begin

l:=pnt_n^.left;

if l^.ves = 25 then write(' ',l^.name,' ');

if l^.left<>nil then node_25(l);

end;

if pnt_n^.right<>nil then

begin

r:=pnt_n^.right;

if r^.ves = 25 then write(' ',r^.name,' ');

if r^.right<>nil then node_25(r);

end;

end;

begin

clrscr;

new(current);root:=current;

current^.name:=1;

current^.ves:=10;

current^.left:=nil;

current^.right:=nil;

repeat

writeln('tekuwij uzel – ',current^.name,' ves=',current^.ves);

writeln('1-prisvoit imja levomu potomoku i prisvoit imja pravomu potomku');

writeln('2-sdelat uzel tekuwim');

writeln('3-vyvesti spisok vseh uzlov');

writeln('4-vivesti elenent, ravnye 25');

writeln('0-vihod');

read(n);

if n=1 then

begin {Sozdanie levogo potomka i Sozdanie pravigo potomka}

writeln('Sozdanie levogo potomka');

if current^.left= nil then new(pnt)

else pnt:= current^.left;

writeln('left ?');

readln;

read(s);

pnt^.name:=s;

pnt^.ves:=V[s];

pnt^.left:=nil;

pnt^.right:=nil;

current^.left:= pnt;

writeln('Sozdanie pravigo potomka');

if current^.right= nil then new(pnt)

else pnt:= current^.right;

writeln('right ?');

readln;

read(s);

pnt^.ves:=V[s];

pnt^.name:=s;

pnt^.left:=nil;

pnt^.right:=nil;

current^.right:= pnt;

end;

if n=2 then

begin {Poisk uzla}

writeln('name ?');

readln;

read(s);

current_s:=nil; pnt_s:=root;

node_search (pnt_s, current_s);

if current_s <> nil then current:=current_s;

end;

if n=3 then

begin {Vyvod spiska uzlov}

writeln;

writeln('spisok uzlov');

pnt_s:=root;

node_list(pnt_s);

writeln;

end;

if n=4 then

begin {poisk нужного uzlа = 25}

pnt_s:=current;

writeln('elementi, ravnye 25: ');

if current^.ves = 25 then writeln(' ',current^.name);

node_25(pnt_s);

writeln;

end;

until n=0;

end.

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

Приложение В

Листинг программы «Список»

program spisok;

type

link = ^linelink; {Формирование списка}

linelink = record

number : integer;

next : link

end;

var

start,last : link; {Начальный и конечный Динамические структуры данных. Линейные списки соответственно}

c : integer;

f1 : text;

procedure list ( var top, last : link; n1 : integer ); {Процедура формирования списка на основе входных данных в виде целого числа}

begin

if top=nil then {Если записываем первый элемент - записываем его в следующий за головой элемент, а в голове делаем буфер из нуля (его использовать не надо)}