Saturday, May 14, 2016

Chương trình chuyển một số nguyên dương thành xâu nhị phân sử dụng danh sách liên kết kép

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

----------------------------------------------------------------------------------------------------------------------------------



#include<stdio.h>


#include<stdlib.h>

//khai bao cau truc
struct node
{
int infor;
struct node *left;
struct node *right;
} *L=NULL,*R=NULL;

//khai bao ham
void Insert(int x);// chen mot nut
int Delete();//xoa mot nut
int empty();//kiem tra danh sach rong

//==chuong trinh chinh==
int main()
{
int n,thuong;
printf("Nhap so nguyen can chuyen sang dang nhi phan:");
do
{
scanf("%d",&n);
if(n<0)
printf("\nSo nguyen nhap phai duong,nhap lai: ");
}while(n<0);
thuong=n;
while(thuong)
{
Insert(thuong%2);
thuong/=2;
}
printf("\n%d chuyen sang dang nhi phan la:",n);
while(!empty())
printf("%d",Delete());
return 0;
}
//==Dinh nghia ham==
void Insert(int x)
{
struct node *N;
N=(struct node*)malloc(sizeof(struct node));
N->infor=x;
N->left=NULL;
N->right=NULL;
//bo sung vao dinh ngan xep
if(L==NULL)
{
L=N;
R=N;
}
else
{
N->right=L;
L->left=N;
L=N;
}
}
//-------------
int Delete()
{
int tg;
struct node *P;
if(L==NULL)
{
printf("Danh sach rong.!");
return 0;
}
tg=L->infor;
P=L;
if(L->right==NULL)
{
L=NULL;
}
else
{
L=L->right;
L->left=NULL;
}
free(P);
return tg;
}
//-------------
int empty()
{
if(L==NULL)
return 1;
return 0;
}
//-------------

Chương trình chuyển một số nguyên thành xâu nhị phân sử dụng danh sách liên kết đơn (ngăn xếp)

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

-------------------------------------------------------------------------------------------------------------------------
xaunhiphan.c
#include<stdio.h>
#include<stdlib.h>

    //khai bao cau truc
typedef struct node node;
struct node
{
int infor;
node *link;
} *T=NULL;

//Khai bao ham
void push(int x);//Hàm bổ sung 
int pop();//Hàm xóa một nút
int empty();//Hàm kiểm tra danh sách rỗng

//==Chuong trinh chinh==
int main()
{
int n,thuong;
printf("Nhap so nguyen can chuyen sang dang nhi phan:");
do
{
scanf("%d",&n);
if(n<0)
printf("\nSo nguyen nhap phai duong,nhap lai: ");
}while(n<0);
thuong=n;
while(thuong)
{
push(thuong%2);
thuong/=2;
}
printf("\n%d chuyen sang dang nhi phan la:",n);
while(!empty())
printf("%d",pop());
return 0;
}
//==Dinh nghia ham==
void push(int x)
{
node *N;
N=(node*)malloc(sizeof(node));
N->infor=x;
N->link=NULL;
//bo sung vao dinh ngan xep
N->link=T;
T=N;
}
//-------------
int pop()
{
int tg;
node *P;
if(T==NULL)
{
printf("Danh sach rong.!");
return 0;
}
P=T;
tg=T->infor;
T=T->link;
free(P);
return tg;
}
//-------------
int empty()
{
if(T==NULL)
return 1;
return 0;
}

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

Họ và tên: Trần Văn Linh
Msv:581597
Lớp K58QLTT

----------------------------------------------------------------------------------------------------

A.   Giải thuật chương trình

Vào :n;
Ra: xâu nhị phân;

{Giải thuật này chuyên đổi một số nguyên thành xâu nhị phân sử dụng  cài đặt bằng danh sách liên kết đơn}

Program ChuyenDoiNhiPhan;
1, read(n);
2, while n <> 0 do
    Begin
              Tg:=n mode 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 đơn

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 đơn ;}

Procedure       Push(var:T,x);
1,{Tao nút mới }
    new<=AVAIL;
    infor(new):=x;
    link(new):= Ø;
2,{ Bổ dung vào ngăn xếp}
    link(new):=N;
   T:=N;
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: L,R);
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;
    Tg=T->infor ;
    T=T->link ;
    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; 
Return;

Lưu ý : P=>AVAIL, P<=AVAIL để biểu thị việc thu hổi và cấp phát bộ nhớ.!

             Link chương trình cài đặt bằng C:               https://linhtranitvnua.blogspot.com/2016/05/chuong-trinh-chuyen-mot-so-nguyen-thanh.html