begin
¦ if l=nil then writeln('Очеpедь пуста!')
¦ else l:=l^.next
end;
{ ОСНОВНАЯ ПРОГРАММА }
clrscr; gotoxy(25,3); writeln(' ОЧЕРЕДЬ '); writeln;
write(' Введите элементы очереди с точкой:');
FORMIR_OTCHERED (L, R);
VIVOD_OTCHERED(L, R); writeln; writeln;
write(' Введите новый элемент: '); readln(EL1);
DOBAV_OTCHERED(EL1,L,R);
VIVOD_OTCHERED(L, R);writeln; writeln;
UDALENIE_OTCHERED (L,R);
writeln(' Удаление элемента из очереди !');
VIVOD_OTCHERED(L, R); writeln;writeln;
UDALENIE_OTCHERED(L,R);
VIVOD_OTCHERED(L,R); writeln;
FORMIR_OTCHERED1 (L, R);
writeln(' К О Н Е Ц Р А Б О Т Ы !');readln;
end.
program STACK; uses crt;
type SS = ^ZVENO;
ZVENO = record
elem: integer; next: SS;
var ST: SS; {начало очереди}
R: SS; {конец очереди}
K: SS; {рабочий указатель}
el,sklad,kol: integer; {рабочий элемент}
procedure VIVOD(var ukstr: SS);
var ukzv: SS;
¦ kol:=0; { распечатка строки }
¦ ukzv:=ukstr;
¦ while ukzv<>nil do
¦ begin
¦ ¦ write(ukzv^.elem,' '); kol:=kol+1;
¦ ¦ ukzv:=ukzv^.next;
¦ end; writeln;
¦ writeln(' Стек содеpжит ',kol,' элемента(ов) !');
procedure SOZDAN_STACK (var ST: SS;var kol:integer);
var K: SS;
EL: integer;
¦ randomize; write(' Подаваемые в стек элементы: ');
¦ new(ST); ST:= nil; kol:=0;
¦ EL:= random(5); write(el,' ');
¦ while EL <> 0 do
¦ ¦ new(K); K^.elem:= EL;
¦ k^.next:= ST; ST:= K;
¦ ¦ EL:= random(5); write(el,' '); kol:=kol+1;
¦ end;
procedure VSTAVKA_V_STACK(var ST:SS; EL:integer);
¦ new(K); K^.elem:= EL;
¦ K^.next:= ST; ST:= K
procedure UDALENIE_IZ_STACK(var ST: SS;var SKLAD: integer);
¦ SKLAD:= ST^.elem;
¦ ST:= ST^.next
procedure UDALENIE_1(var ST: SS; var SKLAD: integer);
¦ if ST = nil then writeln(' Стек пустой !')
¦ else begin
¦ ¦ SKLAD:= ST^.elem; K:=ST;
¦ ¦ ST:= ST^.next; dispose(K);
procedure VIBORKA_IZ_STACKA(var ST: SS; var SKLAD: integer;
N: integer);
var K: SS; i: integer;
¦ K:= ST;
¦ for i:= 1 to N-1 do
¦ UDALENIE_IZ_STACK(K, sklad);
¦ SKLAD:= K^.elem;
clrscr; gotoxy(30,2); write(' С Т Е К '); writeln;writeln;
writeln(' Внимание! Стек фоpмиpует сама ЭВМ');
SOZDAN_STACK(ST,kol); writeln;
write(' Исходный стек: ');
VIVOD(ST); writeln;
write(' Введите новый элемент стека: '); readln(el);
VSTAVKA_V_STACK(ST, el);
write(' Новый стек: '); VIVOD(ST); writeln;
UDALENIE_IZ_STACK(ST, SKLAD); writeln;
write(' Новый стек после удаления веpшины: ');VIVOD(ST);
UDALENIE_1(ST, SKLAD); writeln('Удаляемый элемент: ',sklad);
write(' Укажите номер выбираемого из стека элемента: ');
readln(el); VIBORKA_IZ_STACKA(ST, sklad,el);
if el <= kol then writeln(' Выбранный элемент: ',sklad)
else
writeln(' Такого номеpа нет в стеке !');
writeln;write(' КОНЕЦ РАБОТЫ! ');readln;
program DEC; uses crt;
type SS=^ZVENO;
ZVENO=record
elem: integer;
next: SS;
pred: SS;
var X,Y,A,B,W,F,G: SS; N,EL,ZN: integer;
procedure FORMIR_DEK_1(var X, Y: SS);
var Z: SS; EL: integer;
¦ new(X); read(EL);
¦ X^.elem:= EL; X^.pred:= nil;
¦ Y:= X; Z:= X;
¦ WHILE Y^.elem <> 0 do
¦ ¦ new(Y^.next); Y:=Y^.next; read(Y^.elem);
¦ ¦ Y^.pred:= Z; Z:= Y;
¦ Y^.next:= nil;readln;
procedure FORMIR_DEK_2(var X, Y: SS);
¦ new(X); randomize;
¦ X^.elem:= random (10);
¦ X^.pred:= nil; Y:= X;
¦ while Y^.elem <> 0 do
¦ ¦ new(Y^.next);
¦ ¦ Y^.next^.elem:= random(10);
¦ Y^.next^.pred:= Y; Y:=Y^.NEXT
¦ Y^.pred^.next:= nil
procedure VSTAVKA_V_DEK_POSLE(X,Y: SS);
¦ y^.next:= x^.next; y^.pred:= x;
¦ x^.next:= y; y^.next^.pred:= y;
procedure VSTAVKA_V_DEK_PERED(X, Y: SS);
¦ Y^.next:= X^.pred^.next; X^.pred^.next:= y;
¦ Y^.pred:= X^.pred; x^.pred:= y;
procedure UDAL_DEK(X: ss; VAR Y,Z: SS);
if Y^.next=nil then writeln('Дек пуст !') else
¦ if X=Y then Y:=Y^.next
¦ ¦ X^.pred^.next:=X^.next;
¦ ¦ {Переброска ссылки next вверху}
¦ ¦ X^.next^.pred:=X^.pred;
¦ end;{Переброска ссылки pred внизу}
procedure VIVOD_SPISOK(var Y: SS);
var X: SS;
¦ X:=Y;
¦ while X^.next<>nil do
¦ ¦ write(X^.elem,' ');
¦ ¦ X:=X^.next;
procedure POISK_W_SPISKE(var Y: SS; znach:integer;
var n: integer);
var x:ss;
¦ n:=1; x:=y;
¦ while (x^.elem <> znach) and (x^.next <> nil) do
¦ ¦ x:=x^.next;
¦ ¦ n:=n+1
¦ if x^.next=nil then n:= 0
procedure SORTSPISOK (var X: SS);
var X1, Y1: SS; P: integer;
X1:= X;
¦ while X1^.next <> nil do
¦ ¦ Y1:=X1^.next;
¦ ¦ while Y1^.next <> nil do
¦ ¦ begin
¦ ¦ ¦ if Y1^.elem < X1^.elem then
¦ ¦ ¦ begin
¦ ¦ ¦ ¦ P:= X1^.elem; X1^.elem:= Y1^.elem;
¦ ¦ ¦ ¦ y1^.elem:=p;
¦ ¦ ¦ end;
¦ ¦ ¦ Y1:= Y1^.next;
¦ ¦ end;
¦ ¦ X1:= X1^.next;
clrscr;gotoxy(30,2);writeln(' Д Е К ');writeln;
write(' Внимание! Дек фоpмиpуется ЭВМ '); writeln;
FORMIR_DEK_2(X, Y);
write(' Исходный дек: ');
VIVOD_SPISOK(X); writeln; writeln;
write(' Введите элементы дека - числа, последнее - 0: ');
FORMIR_DEK_1(F,G); writeln;
VIVOD_SPISOK(f); writeln; writeln;
write(' Введите элемент для вставки: ');
new(B); B^.next:=nil; readln(B^.elem);
write(' Вставка после пеpвого элемента: '); A:=F;
VSTAVKA_V_DEK_POSLE(A,B);
VIVOD_SPISOK(F); writeln; writeln;
new(B);B^.next:=nil;readln(B^.elem);
write(' Вставка перед последним элементом: ');
A:=G^.pred; VSTAVKA_V_DEK_PERED(A,B);
write(' Удаление втоpого элемента: ');
UDAL_DEK(F^.next,F,G);
write(' Удаление пеpвого элемента: ');
UDAL_DEK(F,F,G);
write(' Удаление последнего элемента: ');
UDAL_DEK(G,F,G);
write(' Укажите элемент для поиска: '); readln(EL);
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39