Bài tập: Viết chương trình đổi từ số thập phân sang số nhị phân sử dụng stack.
#include <stdio.h> typedef int DataType; //Khai bao cau truc stack typedef struct node{ DataType info; struct node* next; }Node; typedef Node* NODEPTR; typedef NODEPTR STACK; STACK s; //Khoi tao Stack void Init(STACK &s){ s = NULL; //NULL viet hoa het } //Kiem tra Stack rong int IsEmpty(STACK s){ return (s==NULL); } //Them mot phan tu vao Stack; int Push(STACK &s, DataType x){ NODEPTR p = new Node; if(p==NULL) return 0; p->info = x; p->next = s; s = p; return 1; } //Tac vu lay ra mot phan tu int Pop(STACK &s, DataType &x){ if(IsEmpty(s)) return 0; NODEPTR p = s; x = p->info; s = s->next; delete p; return 1; } void Convert(int n, STACK &s){ int sodu; while(n != 0){ sodu = n%2; Push(s,sodu); n=n/2; } } void Output(STACK s){ int x; while(IsEmpty(s) == false){ Pop(s,x); printf(“%d”,x); } } int main(){ STACK s; int n; Init(s); printf(“Nhap so o he thap phan: “); scanf(“%d”,&n); Convert(n,s); Output(s); return 0; } |