русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Добавление элемента в конец списка.


Дата добавления: 2015-09-15; просмотров: 2011; Нарушение авторских прав


a)new(dop); {выделение памяти под элемент}

b)dop^.temp:=2.5;{записываем число в информационное поле}

c)dop^.adr:=nil; {в поле «адрес следующего» элемента записываем nil}

d)pred^.adr:=dop;{в поле «адрес следующего» предыдущего элемента записываем адрес нового элемента}

 

5. Просмотр.Просмотр элементов списка выполняется последовательно с использованием дополнительного указателя:

f:=first;

while f<>nil do

Begin

writeln(f^.temp:4:2,' ');

f:=f^.adr;

end;

6. Удаление элемента из списка.Здесь возможно четыре случая:

a) Удаление единственного элемента После удаления элемента список становится пустым, следовательно необходимо не только освободить память, выделенную для размещения элемента, но и в указатель списка first занести nill: a)dispose(first); b)first:=nill; b) Удаление первого (не единственного) элемента из списка Необходимо сохранить адрес следующего элемента в дополнительной переменной, освободить память элемента и записать в указатель списка адрес следующего элемента: a)x:=first^.adr; b)dispose(first); c)first:=x;
с) Удаление элемента, следующего за данным (не последнего) Необходимо запомнить адрес удаляемого элемента, изменить адресную часть данного элемента и освободить память: a)x:=pred^.adr; b)pred^.adr:=x^.adr; c)Dispose(x); d)Удаление последнего элемента   a)x:=pred^.adr; b)pred^.adr:=nil; c)dispose(x);

Задача 1. Создать программу формирования связанного списка в ходе ввода данных.


program spisok2;

uses crt;

Type

P=^Element;

Element=Record

temp:Real; adr:P;

End;

Var Elem,Beg:P;

X: Real;

Ch: Char;

Begin {Определение адреса начала списка и его сохранение}



clrscr;

NEW(Elem);

Beg:=Elem;

Elem^.adr:=Elem;

{Диалоговый ввод значений с занесением их в список

и организацией связи между элементами}

While Elem^.adr<>Nil Do

Begin

Write('Vvecite chislo:');

ReadLn(Elem^.Temp);

Write('Prodolgit? (Y/N)');

ReadLn(Ch);

If (Ch='n') Or (Ch='N')

Then Elem^.adr:=Nil

Else Begin

NEW(Elem^.adr) ; Elem^.adr:=elem;

End

end;

WriteLn('Ввод данных закончен');

{Вывод полученной числовой последовательности}

WriteLn('Контрольная распечатка');

Elem:=Beg;

Repeat

WriteLn(elem^.temp:8:3) ;

Elem:=Elem^.adr

Until Elem=Nil;

readln

End.


 

Стек

Стекомназывается динамическая структура данных, добавление компоненты в которую и исключение компоненты из которой производится из одного конца, называемого вершиной стека. Стек работает по принципу: LIFO (Last-In, First-Out) - поступивший последним, обслуживается первым.

Обычно над стеками выполняется три операции:

  1. начальное формирование стека (запись первой компоненты);
  2. добавление компоненты в стек;
  3. выборка компоненты (удаление).

Для формирования стека и работы с ним необходимо иметь две переменные типа указатель, первая из которых определяет вершину стека, а вторая - вспомогательная. Пусть описание этих переменных имеет вид:

var pTop, pAux: Pointer;

где pTop - указатель вершины стека;

pAux - вспомогательный указатель.

Пример 2. Составить программу, которая формирует стек, добавляет в него произвольное количество компонент, а затем читает все компоненты и выводит их на экран дисплея, В качестве данных взять строку символов. Ввод данных - с клавиатуры дисплея, признак конца ввода - строка символов END.


Program STACK;uses Crt;type Alfa= String[10]; PComp= ^Comp; Comp= Record sD: Alfa; pNext: PComp end;var pTop: PComp; sC: Alfa; Procedure CreateStack(var pTop: PComp; var sC: Alfa); begin New(pTop); pTop^.pNext:=NIL; pTop^.sD:=sC end;Procedure AddComp(var pTop: PComp; var sC: Alfa); var pAux: PComp; begin NEW(pAux); pAux^.pNext:=pTop; pTop:=pAux; pTop^.sD:=sC end; Procedure DelComp(var pTop: PComp; var sC:ALFA); begin sC:=pTop^.sD; pTop:=pTop^.pNext end; begin Clrscr; writeln(' ВВЕДИ СТРОКУ '); readln(sC); CreateStack(pTop,sC); repeat writeln(' Введите строку '); readln(sC); AddComp(pTop,sC) until sC='END';writeln(' ВЫВОД РЕЗУЛЬТАТОВ '); repeat DelComp(pTop,sC); writeln(sC); until pTop = NIL;readkey; end.

 

ЗАДАНИЯ ДЛЯ ВЫПОЛНЕНИЯ:

1.В программе имеются описания

Var P, Q:^integer; R:^char;

Какие из следующих оператором неправильные и почему?


a) P:=Q;

b) Q:=R;

c) P:=Nil;

d) R:=Nil;

e) Q:=Р^;

f) R^:=P^;

g) P^:=Nil;

h) Q^:=Ord(R^);

i) If R<>Nil then R^:=Nil^;

j) If Q>Nil then Q^:=P^;

k) If P=Q then Write(Q);

l) If Q<>R then Read(R^).


2.В программе имеются описания

Type A=^Char;

B =Record Fl:Char; F2:A End;

Var P:^B; Q:A;

Определить значения всех указателей и динамических перемен­ных после выполнения следующих операторов:

NEW(Q); Q^:='7';

NEW(P); P^.Fl:=Succ(Q^); P^.F2:=Q;

3.Найти ошибки в следующей программе:

Program Example;

Var А,В: ^Integer;

Begin if A=nil then read(A);

A^:=5; B:=nil; B^:=2;

NEW(B); read(B^); writeLn(B,B^);

NEW(A); B:=A; DISPOSE(A); B^:=4

End.

4.Связанный список представляет собой символьную цепочку из строчных латинских букв. Описать процедуру или функцию, которая:

a.определяет, является ли список пустым;

b.заменяет в списке все вхождения одного символа на вхож­дения другого;

c.меняет местами первый и последний элементы непустого списка;

d.проверяет, упорядочены ли элементы списка по алфавиту;

e.определяет, какая буква входит в список наибольшее коли­чество раз.

Контрольные вопросы

1.Что такое динамическое выделение памяти? Статическое? Достоинства и недостатки?

2.Что такое указатель? Его описание?

3.Процедуры динамического выделения памяти?

4.Назовите известные вам динамические структуры данных?

5.Какой тип используется при описании элементов списка?

6.Дайте определение понятиям список, стек, очередь?

 

 

Содержание отчета:

-тема и цель работы,

-созданные программы,

- выводы.

Отчет сдать преподавателю.

 



<== предыдущая лекция | следующая лекция ==>
Добавление элемента перед первым элементом списка. | По дисциплине «Международный маркетинг»


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.