CÁC KIỂU DỮ DIỆU TRỪU TƯỢNG
Trang 1CÁC KIỂU DỮ DIỆU TRỪU TƯỢNG
{ - TAO DANH SACH RONG -}
Procedure Makenull(Var L: List);
{ - TRA VE VI TRI PHAN TU SAU PT CUOI CUNG -}
Function End_List(L:List): integer;
Trang 2for i:=1 to L.Last do
if L.data[i]=x then tim:=i;
Local:=tim;
End;
{ - THEM PHAN TU VAO DANH SACH TAI VI TRI P -}
Procedure Insert(x:integer;P:integer; Var L:List);
{ - XOA PHAN TU TAI VI TRI P -}
Procedure Delete(p:integer;Var L:List);
{ - LAY GIA TRI PHAN TU TAI VI TRI P -}
Function Retrieve(P: integer;L:List):integer;
Trang 3Var L: List; x,n:integer;
{ - TAO DANH SACH RONG -}
Procedure Makenull(Var L: List);
Trang 4{ - THEM PHAN TU VAO VI TRI BAT KI TRONG DANH SACH -}
Procedure Insert_L(x:datatype;p:integer;Var L:List);
{ - THEM 2 PHAN TU VAO DANH SACH DA DUOC SAP XEP -}
Procedure Insert_L1(x:integer;Var L: List);
{ - XOA PHAN TU TAI VI TRI n TRONG DANH SACH -}
Procedure Delete(n:integer;Var L:List);
Var i: integer; P,P1:List;
Begin
if n=1 then
begin
P:=L;
Trang 5{ - SAP XEP DANH SACH -}
Procedure SapXep(Var L: List);
Var P,Q: List; tam:integer;
{ - TAO HANG RONG -}
Procedure Makenull(Var Q: Queue);
Begin
Trang 6{ - XOA PHAN TU DAU HANG -}
Procedure DelQueue(Var Q: Queue);
{ - THEM PHAN TU VAO CUOI HANG - }
Procedure EndQueue(x:elementype;Var Q: Queue);
{ - TAO HANG RONG -}
Procedure Makenull(Var Q: Queue);
Trang 7Function Full_Q(Q:Queue):Boolean;
Begin
Full_Q:=Q.rear=max;
End;
{ - THEM PHAN TU VAO CUOI HANG -}
Procedure EndQueue(x:elementype;Var Q: Queue);
{ - XOA PHAN TU RA KHOI HANG -}
Procedure DelQueue(Var Q: Queue);
{ - TAO NGAN XEP RONG -}
Procedure Makenull(Var S: Stack);
Trang 8{ - THEM PHAN TU X LEN DINH NGAN XEP -}
Procedure Push(x:elementype;Var S:Stack);
{ - XOA PHAN TU O DINH NGAN XEP -}
Procedure POP(Var S: stack);
Var S: Stack; x,m,n:integer;
{ - TAO STACK RONG -}
Procedure Makenull(Var S: Stack);
Trang 9new(P);P^.element:=x;
P^.link:=S;S:=P;
End;
{ - XOA PHAN TU TAI DINH NGAN XEP -}
Procedure POP(Var S: Stack);
IV- CÂY TỔNG QUÁT:
{ - THUC THI CAY TQ BANG MANG -}
{ - TAO CAY RONG -}
Procedure Makenull(Var T:Tree);
{ - TIM CHA CUA NUT N -}
Function Parent(n: node; T: Tree):node;
Trang 10if empty(T) then writeln('Cay rong!')
else ROOT:=1;
End;
{ - NHAN CUA NUT N -}
Function Label_T(n:node; T: Tree):elementype;
Trang 11{ - DO SAU CUA NUT N -}
Function DoSau(n:node;T: Tree):integer;Var i: node;dem:integer;
{ - BAC CUA NUT -}
Function Bac_Node(n:node;T: Tree):integer;Var i:node; kq:integer;
Trang 12i:=right_sibling(i,T);
end;
Bac_node:=kq;
End;
{ - BAC CUA CAY -}
Function Bac_Tree(T: Tree):integer;
Var i:node; kq:integer;
while (T.parent[i]<>n) and (i<=T.max_node) do i:=i+1;
if T.parent[i]=n then LA:=false
Trang 13writeln('- Nhap thong tin cho nut thu:' ,i,': ');
write(' + Nhan ',i,': ');readln(T.labell[i]);
write(' + Cha cua nut: ');readln(T.parent[i]);
Header: array[1 max_node] of List;
Labell: array[1 max_node] of LabelType;
Root: node;
end;
Var T: Tree;
{ - TAO DANH SACH RONG -}
Procedure Makenull_L(Var L:List);
Trang 14for i:=1 to L.Last do
if L.element[i]=x then tim:=true;
Local:=true;
End;
{ - TAO CAY RONG -}
Procedure Makenull_T(Var T: Tree);
Trang 15{ - CON TRAI CUA NUT -}
Function Leftmost_Child(n:node; T:Tree):node;
{ - ANH EM BEN PHAI CUA NUT -}
Function Right_Sibling(n:node; T:Tree):node;
Trang 16else
Right_sibling:=retrieve(first(L)+1,L); end;
Trang 17{ - BAC CUA CAY -}
Trang 18Var T: Tree;
{ - TAO CAY RONG - }
Procedure Makenull(Var T:Tree);
Trang 19{ - KIEM TRA NUT LA -}
Function ISLEAT(T: Tree):Boolean;
{ - THEM MOT NUT VAO BEN TRAI NHAT -}
Procedure Insert_Left(x: labeltype;Var T:Tree);
{ - THEM MOT NUT VAO BEN PHAI -}
Procedure Insert_Right(x: labeltype;Var T:Tree);
{ - TAO NUT GOC -}
Procedure Nut_goc(x: labeltype;Var T:Tree);
Trang 20Var tam: Tree;
{ - NHAP CAY NHI PHAN -}
Procedure Read_Tree(Var T: Tree);
Var x: labeltype;T2: Tree; ch: char;
Trang 21Var T: BSTree; x: KeyType;dem:integer;
{ - TAO CAY RONG -}
Procedure Makenull(Var T: BSTree);
Begin
T:=nil;
End;
{ - KIEM TRA CAY RONG -}
Function Empty(T: BSTree):boolean;
{ - THEM NUT VAO CAY: DE QUI -}
Procedure Insert(x:keyType;Var T: BSTree);
{ - THEM NUT SU DUNG PP KHONG DE QUI -}
Procedure Insert1(x:KeyType;Var T: BSTree);
Var P,Q,tam: BSTree;LR:integer;
Begin
new(tam);
tam^.left:=T;Q:=tam;LR:=-1;
P:=T;
Trang 22{ - KIEM TRA NUT LA -}
Function ISLEAT(T: BSTree):Boolean;
Trang 23{ - tim nut co khoa x cho truoc -}
Function Local(x:KeyType;T:BSTree; dosau:integer):integer;Var P:integer;
if x<P then Local:=Local(x,T^.left,dosau+1)End;