Saturday, May 21, 2016

Giải thuật chuyển 1 số nguyên dương sang dạng nhị phân sử dụng ngăn xếp cài đặt bằng danh sách liên kết kép

//Họ Tên: Trần Văn Linh
// Msv:581597
//Lớp:K58QLTT

A.   Giải thuật chương trình chính
Program ChuyenDoiNhiPhan;
1, read(n);
2, while n <> 0 do
    Begin
              Tg:=n mod 2;
              Call Push(Tg);
              n:= n /2;
    end
3, while Empty(T) <>TRUE do write(Pop());
End.

B.   Thủ tục bổ sung vào ngăn xếp cài đặt bằng danh sách liên kết kép
Vào : Ngăn xếp (T,X);
Ra:  Không có;
{Thủ tục này bổ sung phân tử dữ liệu X vào ngăn xếp (T) có T là nút đỉnh ngăn xếp cài đặt bằng danh sách liên kết kép ;}

Procedure       Push(var:T,x)
1,{Tao nút mới }
    new<=AVAIL;
    infor(new):=x;
    left(new):= Ø;
    right(new):= Ø;
2,{ Bổ dung vào ngăn xếp}
If T =Ø then    { trường hợp danh sách rỗng}
    T:= new;
Else
    Begin
              right(new):=T;
              left(T):=new;
              T:=new;
    End
Return

C.   Hàm loại bỏ một phần tử ở đỉnh ngăn xếp
Vào :Ngăn xếp (T);
Ra: Trả phần tử dữ liệu của nút bị loại bỏ.
{Hàm này loại bỏ phần tử của đỉnh ngăn xêp(T) có T là đỉnh ngăn xếp và trả về phần tử loại bỏ;}

Function Pop(var: T)
1,{Kiem tra danh sach rong};
    If T=Ø then begin
                                          Write(‘Danh sach rong.!’);
                                          Return ;
                                 End;
2,{Loại bỏ phần tử đỉnh ngăn xếp}
    Tg:=INFOR(T);
    P:=T;
    If right(T)= Ø  then {Trường hợp danh sách chỉ còn 1 node }
T:= Ø
    Else
              Begin
                       T:=right(T);
                       left(T):= Ø;
              End;
              P=>AVAIL;
3, Pop:=Tg;
Return;

D.   Hàm kiểm tra ngăn xếp rỗng
Vào: ngăn xếp (T);
Ra :TRUE nếu ngăn xếp rỗng , FALSE nếu ngăn xếp chưa rỗng.
{hàm này kiểm tra ngăn xếp rỗng, ngăn xếp được cài đặt bằng danh sách liên kép}

Function  Empty(T)
If T= Ø  then 
Empty:=TRUE;
else
         Empty:=FALSE; 

0 comments:

Post a Comment