( 3- ,
050102 )
..
, . , , , , , , ..
̻ , , : , , , , .
̻ , .
:
;
, ;
;
:
;
:
, ;
;
.
: , , , .
, Turbo Pascal 7.0 WS C++ ( ).
- .
- , FIFO (First In and First Out - ).
- . - ( ) ( ).
, , .
:
( );
|
|
/ ( );
( ).
- Queue_Test.
qretrieve() ; . , . qretrieve() , , .
""
// FIFO First In - First Out
// Queue
Programm Queue_Test;
var
q:array[0..30] of Integer;
qnext,qindex,qlength:Integer;
procedure qstore(i:Integer);
begin
if (qnext+1)<qlength then
begin
qnext:=qnext+1;
q[qnext]:=i
end
else
writeln(' ')
end;function qretrieve():Integer;
begin
if qindex=qnext then
begin
writeln(' ');
qretrieve:=0;
end
else
begin
qindex:=qindex+1;
qretrieve:=q[qindex]
end;
end;
begin
qlength:=30;
qnext:=0;
qindex:=0;
qstore(1); 1
qstore(2); 1 2
qstore(3); 1 2 3
qretrieve(); { 1} 2 3
qstore(4); 2 3 4
qretrieve(); { 2} 3 4
qretrieve(); { 3} 4
qretrieve(); { 4}
end.
Queue_Test , , .
, , .
qnext qindex (0). ( , ).
qindex 1 qnext - , , . qindex=qnext - . .
""
// FIFO First In - First Out
// Queue
Programm Queue_Test;
var
q:array[0..30] of Integer;
qnext,qindex,qlength:Integer;
procedure qstore(i:Integer);
begin
if (qnext+1)<>qlength then
begin
q[qnext]:=i;
qnext:=qnext+1;
if qnext=qlength then
qnext:=0 { }
end
else
writeln(' ')
end;function qretrieve():Integer;
begin
if qindex=qlength then
qindex:=0; { }
if qindex=qnext then
begin
writeln(' ');
qretrieve:=0;
end
else
begin
qretrieve:=q[qindex];
qindex:=qindex+1
end;
end;begin
qlength:=30;
qnext:=0;
qindex:=0;
qstore(1); 1
qstore(2); 1 2
qstore(3); 1 2 3
qretrieve(); { 1} 2 3
qstore(4); 2 3 4
qretrieve(); { 2} 3 4
qretrieve(); { 3} 4
qretrieve(); { 4}
end.
- , - LIFO (Last In and First Out - ). , .
|
|
- , - . .
- .
, , .
:
( );
( ) ( );
() , Forth ( ).
""
Programm Stack_Test;
const
N=30;
var
stack:array[0..N] of char;
slen,pos:integer;
procedure push(i:char);
begin
if pos<slen then
begin
stack[pos]:=i;
pos:=pos+1
end
else
writeln(' .');
end;
function pop():char;
begin
if pos=0 then
begin
writeln(' .');
pop:=0
end
else
begin
pos:=pos-1;
pop:=stack[pos]
end;
end;
begin
slen:=N;
pos:=0;
push('A'); A
push('B'); B A
push('C'); C B A
pop(); { C} B A
push('D'); D B A
pop(); { D} B A
pop(); { B} A
pop(); { A}
end.
Stack_Test.
Pos - - .
Pos , ; Pos=0 - .
""
Programm Stack_Test;
type
stype=real;
next=^elem;
elem=record
dr:next;
data:stype
end;
stack=next;
var
p:stack;
procedure push(var st:stack; newl:stype);
var
q:next;
begin
new(q);
q^.data:=newl; { }
q^.dr:=st;
st:=q; { - }
end;
function pop(var st:stack):stype;
var
q:next;
begin
if st=nil then
writeln(' .')
else
begin
pop:=st^.data;
q:=st;
st:=st^.dr;
dispose(q)
end;
end;
begin
push(p,43);
writeln(pop(p):3:9);
push(p,726,54);
writeln(pop(p):3:9);
readln;
end.
Stack_Test.
, . - . , . , - .
, "" - , nil.
, , .
: push(var st:stack,...).
P , P nil.
p:=nil;
:
;
() .
. ; () . .
() ().
().
, . , (). (. 1).
|
|
. (l1), - , .
nil (NULL).
: . , , , , .
, , , :
;
;
;
.
""
rel=^elem;
elem=record
next:rel1;
data:< >
end;
list1=rel1;
var
l1:list1;
procedure insert1(link:rel1;info:<>);
var
q:elem1;
begin
new(q);
q^.data:=info;
q^.next:=link^.next;
link^.next:=q
end;
procedure delete1(link:rel1);
var
q:rel1;
begin
if link^.next<>nil then
begin
q:=link^.next;
link^.next:=link^.next^.next;
dispose(q);
end
end;
function search1(l:list1;info:<>;var r:rel1):boolean;
var
q:rel1;
begin
search1:=false;
r:=nil;
q:=l^.next;
while (q<>nil) and (r<>nil) do
begin
if q^.data=info then
begin
search:=true;
r:=q
end;
q:=q^.next
end
end;