



















Preview text:
lOMoAR cPSD| 58702377 I. Ngăn xếp ( Stack ) Vào trước ra sau
Chuyển đổi số nhị phân dùng ngăn xếp
Kiểm tra dấu ngoặc hợp lệ lOMoAR cPSD| 58702377
Phần tử đầu tiên lớn hơn bên phải
Diện tích hình chữ nhật lớn nhất trên biểu đồ II. Hàng đợi ( Queue ) Vào trước ra trước ( Hàng đợi 2 đầu ) lOMoAR cPSD| 58702377
Số lớn nhất của mọi cửa sổ kích thước k III.
Danh sách liên kết #include using namespace std; struct Hocphan{ string mshp; string nameHP; int soTin; float TSQT, TSCK; }; struct HP{ Hocphan a; HP *next; }; struct diemHocphan{ float MSHK; float diemQT, diemCK; string mshp; }; struct diemHP{ diemHocphan h; diemHP *next; }; struct Student{ long mssv; string nameSV; float gpa; diemHP* k; }; struct SV{ Student s; lOMoAR cPSD| 58702377
SV *next; }; typedef struct diemHP* dhp; typedef
struct HP* hp; typedef struct SV* sv; // khoi tao sinh vien
sv makesv(){ Student s; cout << "Nhap thong tin sinh
vien:\n"; cout << "Nhap ma so:"; cin >> s.mssv; cout <<
"Nhap ten sinh vien:"; cin.ignore(); getline(cin, s.nameSV);
cout << "Nhap gpa:"; cin >> s.gpa; int n; cout << "So hoc
phan da hoc:"; cin >> n; dhp head1 = new diemHP(); head1->next = NULL;
for(int i = 0; i < n; i++){ dhp moi = head1; moi->next = head1;
head1 = moi; cout << "Nhap diem hoc phan: \n"; cout << "Hoc
ky:"; cin >> s.k->h.MSHK; cout << "Ma so hoc phan:" ;
cin.ignore(); getline(cin, s.k->h.mshp); cout << "Diem qua
trinh:"; cin >> s.k->h.diemQT ; cout << "Diem cuoi ky:"; cin >>
s.k->h.diemCK; head1->h = s.k->h; } sv tmp = new SV(); tmp->s = s; tmp->next = NULL; }
// kiem tra danh sach rong bool empty(sv a){ return a == NULL; }
// bo sung sinh vien x vao dau danh sach void
insertfirst(sv &a){ sv tmp = makesv(); if(a == NULL){ a =
tmp; } else{ tmp->next = a; a = tmp; } } lOMoAR cPSD| 58702377
// khoi tao hoc phan hp
makehp(){ Hocphan a; cout <<
"Nhap thong tin hoc phan: \n";
cout << "So tin chi hoc phan: ";
cin >> a.soTin; cout << "Ten hoc phan: "; cin.ignore(); getline(cin, a.nameHP); cout << "Ma so hoc phan: "; cin.ignore(); getline(cin,
a.mshp); cout << "Trong so qua
trinh: "; cin >> a.TSQT; cout <<
"Trong so cuoi ki: "; cin >> a.TSCK; hp tmp = new HP();
tmp->a = a; tmp->next = NULL; }
// bo sung hoc phan moi vao dau danh sach void
inserthp(hp &a){ hp tmp = makehp(); if(a == NULL){ a = tmp;
} else{ tmp->next = a; a = tmp; } } // dem so hoc phan int Sizehp(hp a){ int dem = 0; while(a != NULL){ ++dem; a = a->next; } return dem; } lOMoAR cPSD| 58702377
// bo sung hoc phan moi vao sau mon hoc co ma so cho truoc void inserthpmoi(hp
&a, string x){ hp p = a; Hocphan as = p->a; int n = Sizehp(a); for(int i = 0 ; i < n ; i++){
if(as.mshp != x){ p = p->next; } else{ break; } } hp tmp = makehp(); tmp->next = p- >next; p->next = tmp; }
// xoa mon hoc co ma mon cho truoc void
deletehp(hp h, string ms){ int n = Sizehp(h); hp p = h; hp q = NULL;
for(int i = 0 ; i < n ; i++){ if(p- >a.mshp != ms){ q = p; p =
p->next; } else{ q->next = p->next; } } }
// sap xep cac mon hoc theo thu tu tang dan cua so tin chi void sapxep(hp &h){
hp p = h; for(p; p->next = NULL; p = p->next){ hp min = p; for(hp q = p->next; q !=
NULL ; q = q->next){ if(q->a.soTin < min->a.soTin){ min = q; } }
int tmp = min->a.soTin; min->a = p->a; p->a.soTin = tmp; } } // dem so phan tu int Sizesv(sv a){ int dem = 0; while(a != NULL){ lOMoAR cPSD| 58702377 ++dem; a = a->next; } return dem; }
// dem so hoc phan da hoc cua 1 sinh vien int
Sizedhp(Student a){ int dem = 0; dhp tmp = a.k; while(tmp != 0){ ++dem; tmp = tmp->next; } return dem; }
// bo sung sinh vien x vao giua danh sach, truoc phan tu node duoc tro boi p void
insertmiddle1(sv &a, int pos){ int n = Sizesv(a); if(pos <= 0){ cout << "khong hop le"; return; }
else if(pos == 1){ insertfirst(a); return;
} sv q = NULL; sv p = a; for(int i = 1; i <=
pos - 1; i++){ q = p; p=p->next; } sv tmp = makesv(); tmp-
>next = q->next; q->next = tmp; }
// bo sung sinh vien x vao giua danh sach, sau phan tu node duoc tro boi p void insertmiddle2(sv &a, int pos){
int n = Sizesv(a); if(pos <= 0){ cout << "khong hop le"; return; }
else if(pos == 1){ insertfirst(a); return; lOMoAR cPSD| 58702377 }
sv p = a; for(int i = 1; i < pos - 1; i++){ p=p->next; } sv tmp = makesv(); tmp-
>next = p->next; p->next = tmp; }
// bo sung sinh vien vao sau sinh vien co ma so sinh vien cho truoc void insertsv(sv &a, long
x){ sv p = a; Student as = p->s; int n = Sizesv(a); for(int i = 0 ; i < n ; i++){ if(as.mssv != x){ p = p- >next; } else{ break; } } sv tmp = makesv(); tmp->next = p- >next; p->next = tmp; }
// xoa sinh vien duoc tro boi con tro p void deletesv(sv &a, int pos){
if( pos <= 0 || pos > Sizesv(a)) return; sv q =
NULL, p = a; for(int i = 1; i < pos ; i++){ q = p; p = p->next; } if(q = NULL){ a = a- >next; }
else { q->next = p->next; } }
// xoa sinh vien o truoc sinh vien duoc tro boi p void
deletesvtruoc(sv&a, int pos){ if( pos <= 0 || pos > Sizesv(a))
return; sv r = NULL, q = NULL, p = a; for(int i = 1; i < pos ; i++){ r = q; q = p; p = p->next; } lOMoAR cPSD| 58702377 if(r = NULL){ a = a- >next; }
else { r->next = q->next; } }
// xoa sinh vien o sau sinh vien duoc tro boi p void deletesvsau(sv&a, int pos){
if( pos <= 0 || pos > Sizesv(a)) return; sv q =
NULL, p = a; for(int i = 1; i < pos ; i++){ p = p-
>next; } q = p->next; if(p = NULL){ a = a->next; }
else { p->next = q->next; } } // in 1 mon hoc void inhp(Hocphan a){
cout << "MSHP: " << a.mshp << endl; cout << "Ten hoc phan: "
<< a.nameHP << endl; cout << "So tin hoc phan: " << a.soTin <<
endl; cout << "Trong so qua trinh: " << a.TSQT << endl; cout <<
"Trong so cuoi ki: " << a.TSCK << endl; } // in 1 sinh vien void insv(Student s, int n){
cout << "MSSV: " << s.mssv << endl; cout << "Ho Ten:
" << s.nameSV << endl; cout << "GPA: " << s.gpa << endl;
cout << "Danh sach hoc phan: \n"; for(int i = 0; i < n ; i++){ cout << "Ma so hoc
ky: " << s.k->h.MSHK << endl; cout << "Ma so hoc phan: " << s.k->h.mshp <<
endl; cout << "Diem qua trinh: " << s.k->h.diemQT << endl; cout << "Diem
cuoi ki: " << s.k->h.diemCK << endl; s.k = s.k->next; lOMoAR cPSD| 58702377 } }
// in danh sach sinh vien void
inds(sv a){ int n = Sizesv(a); int f =
Sizedhp(a->s); for(int i = 0; i < n;
i++){ insv(a->s,f); a = a->next; } cout << endl; }
// tim kiem sinh vien o truoc sinh vien duoc tro boi p va in sinh vien do ra man hinh
void findsvq(sv a, int pos){ sv q =
NULL, p = a; for(int i = 1; i < pos ; i++){ q = p; p = p->next; } Student as = q->s; int f =
Sizedhp(a->s); insv(q->s,f); }
// tim kiem sinh vien bang mssv cho truoc va in sinh vien do ra man hinh
void findsv(sv a, long x){ sv p = a; Student as = p->s; int n =
Sizesv(a); for(int i = 0 ; i < n ; i++){ if(as.mssv != x){ p = p- >next; } else{ int f = Sizedhp(p-
>s); insv(p->s,f); break; } } } lOMoAR cPSD| 58702377
// tim mon hoc co ma so mon hoc cho truoc va in ra man hinh void findhp(hp a,
string x){ hp p = a; Hocphan as = p->a; int n = Sizehp(a); for(int i = 0 ; i < n ; i++){
if(as.mshp != x){ p = p->next; } else{ inhp(p->a); break; } } IV. Đệ quy
// tong cua n so tu nhien dau day so tu nhien long long dqsumstn(int n){ if(n == 1) return 1; return dqsumstn(n - 1) + n; } lOMoAR cPSD| 58702377 long long sumstn(int n){
long long sum = 0; for(int i = 1; i
<= n; i++){ sum = sum + i; } return sum; }
// to hop chap k cua n long long dqtohop( int n, int k){
if(k == 0) return 1; return ((n- k+1)/k)*dqtohop(n,k-1); }
long long tohop( int n, int k){ if(k == 0 |
k == n) return 1; long long n1 = sumstn(n); long long k1 = sumstn(k); long long ntk= sumstn(n-k); long long th = n1/k1/ntk; return th; }
// tim uoc chung lon nhat cua 2 so nguyen a va b int dqucln(int a,
int b){ if(a == 0 | b == 0) return a + b; if(a == b) return a; if(a>b){ return dqucln(a-b,b); } else{ if(a} }
int ucln(int a, int b){ int uc; int c =
(ai++){ if(a%i == 0 && b%i == 0){ uc = i; lOMoAR cPSD| 58702377 } } return uc; } V. Thuật toán sắp xếp #include #include
using namespace std; // sap xep chon
void selectionsort(int a[], int n){
for(int i = 0; i < n-1; i++){ int min = i;
for(int j = i+1; j < n; j++){ if(a[j] < a[min]){ min = j; } } swap(a[i],a[min]); } } // sap xep noi bot lOMoAR cPSD| 58702377
void bubblesort(int a[],int n){
for(int i = 0; i < n-1; i++){ for(int j = n-1; j > i; j-
-){ if(a[j] < a[j-1]){ swap(a[j], a[j-1]); } } } }
// sap xep noi bot cai tien void bubblesort1(int a[], int n){
int i = 0; bool sorted = false; while(!sorted
&& i < n-1){ sorted = true; for(int j = n -2; j
>= i; j--){ if(a[j] > a[j+1]){ sorted = false; } } i++; } } // sap xep chen lOMoAR cPSD| 58702377
void insertionsort(int a[], int n){
for(int i = 1; i < n; i++){ int x = a[i]; int pos = i - 1;
while(pos >= 0 && x < a[pos]){ a[pos + 1] = a[pos]; --pos; } a[pos + 1] = x; } }
int main(){ int a[1000], n; cin >> n;
for(int i = 0; i < n; i++){ cin >> a[i]; }
selectionsort(a,n); for(int i = 0;
i < n; i++){ cout << a[i] << " "; } return 0; } VI. Cây nhị phân #include using namespace std; lOMoAR cPSD| 58702377 struct node{ int data; }; struct tree{ node a; tree *LP, *RP; }; typedef struct tree* tr; // khoi tao cay void
maketree(tr &T){ T = NULL; } // bo sung 1 phan tu void
inserttree(tr &T, int x){ if(T ==
NULL){ tr p = new tree(); p->a.data = x; p->LP = NULL; p->RP = NULL; T = p; }
else { if(T->a.data > x){ inserttree(T- >LP,x); }
else if(T->a.data < x){ inserttree(T->RP,x); } } }
// hien thi cac khoa tren cay (NLR) void duyettree(tr T){ lOMoAR cPSD| 58702377
if(T != NULL){ cout << T->a.data << endl;
duyettree(T->LP); duyettree(T- >RP); } } // dem so phan tu cua cay int demtree(tr T){ int dem = 0; while(T != NULL){ ++dem; demtree(T->LP); ++dem; demtree(T->RP); } return dem; }
// tong cac khoa tren cay long sumtree(tr
T){ long sum = T->a.data; int n =
demtree(T); for(int i = 1; i <= n ; i++){
sumtree(T->LP); sum = sum + T->a.data;
sumtree(T->RP); sum = sum + T->a.data; } return sum; } lOMoAR cPSD| 58702377 lOMoAR cPSD| 58702377 lOMoAR cPSD| 58702377