русс | укр

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

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

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

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


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

Приклад програми


Дата добавления: 2014-11-28; просмотров: 537; Нарушение авторских прав


Умова задачі: Організувати список із операціями впорядкування елементів, вилучення елементів із списку, друкування списку.

uses crt;

type

ptr=^zap; {тип покажчик на запис}

zap=record

number:string; {елемент даних}

next:ptr; {покажчик на наступний елемент}

end;

var first: ptr; {покажчик на початок списку }

ch: char; { вибiр режиму обробки списку}

newptr, {покажчик на введений елемент}

curr, {покажчик на наступний елемент}

prev: ptr; {покажчик на попереднiй елемент}

reg: string; {значення елемента даних }

done: boolean; {прапорець для пошуку мiсця вставки елемента}

{додавання елементiв до списку }

procedure insert;

begin

write('input elenent:');

readln(reg);

new(newptr); { видiлення пам'ятi пiд новий елемент}

newptr^.number:=reg; { ввiд даних в пам'ять}

if first=nil then { формування першого елемента списку}

begin

first:=newptr; {початковий покажчик на першому елементi}

first^.next:=nil; { покажчик на наступний елемент }

end

else {якщо список не порожнiй

перевiрка впорядкованостi списку}

if reg<=first^. number then {якщо нове значення менше iснуючого}

{вставка нового елемента на початку списку}

begin newptr^.next:=first;

first:=newptr;

end

else {якщо нове значення бiльше iснуючих}

{пошук потрiбного мiсця вставки }

begin

curr:=first; {покажчик поточного елемента вказує на перший}

repeat

prev:=curr; {покажчик попереднього елемента вказує на

поточний елемент}

curr:=curr^.next; {покажчик поточного елемента вказує на

наступний елемент}

if curr=nil

then done:=true

else done:=curr^.number>=reg;

until done; {переадресацiя пари покажчикiв до тих пiр, поки значення

даних, що введене, бiльше за тих, що є в списку: until curr^.number>=reg;}

{вставка нового елемента }

prev^.next:=newptr;



newptr^.next:=curr;

end

end; { кiнець процедури insert}

{вилучення елемента iз списку, перший елемент вилучається останнiм}

procedure delete;

begin

if first=nil then {якщо список порожнiй}

begin

writeln('List is empty.Press ENTER...');

readln;

 

end

else {якщо список не порожнiй}

begin

write('input element:');

readln(reg); {ввiд значення, що вилучається }

curr:= first;

if curr^.number=reg then {якщо потрiбний елемент знайдений}

first:=curr^.next {вилучення елемента }

else

repeat {пошук потрiбного елемента }

prev:=curr; {перепризначення покажчикiв }

curr:=curr^.next; {покажчик на попереднiй елемент стає

поточним покажчиком, покажчик на

поточний елемент вказує на наступний}

until (curr^.number=reg) or (curr^.next=nil);

{вилучення знайденого елемента та звiльнення пам'ятi}

if curr^.number=reg then {якщо елемент списку спiвпадає з заданим}

begin

prev^.next:=curr^.next; {переадресацiя покажчикiв}

dispose(curr); end {звiльнення пам'ятi}

else

begin {якщо елемент не знайдено}

writeln(reg,' not found in list. Press ENTER...'); {вивiд повiдомлення}

readln;

end;

end;

end; { кiнець процедури delete }

{ вивiд списку на екран }

procedure outlist;

begin

curr:=first; {поточний покажчик вказує на перший}

if curr=nil then writeln('List is empty')

else begin

writeln(' output list:');

repeat

write(curr^.number,' '); {вивiд значення елемента }

curr:=curr^.next; {поточним стає покажчик на наступний елемент} until curr=nil;

{вивiд значень, поки є елементи в списку}

end;

writeln;

end;

 

begin {**** головна програма ******}

first:=nil; {початок списку- список порожнiй }

repeat

clrscr; outlist; {очищення екрана, виведення списку}

writeln('I- input D- delete Q- quit');

write('input command:');

readln(ch);

ch:=upcase(ch);

case ch of

'I': Insert;

'D': delete;

end;

until ch='Q';

end.

 

 



<== предыдущая лекция | следующая лекция ==>
 | 


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


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

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

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


 


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

 
 

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

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