- void init Node* &phead int isEmptyNode* phead Node* createNodeint x void insertFirstNode* &phead, int x void insertLastNode* &phead, int x void showListNode* phead - Cách 1 void inputN
Trang 1Biên
www.hutech.edu.vn
Trang 2*1.2021.COS321*
tailieuhoctap@hutech.edu.vn
Trang 3I III
1
1.1 TÓM LÝ 1
1.1.1 Hàm 1
4
5
1.2 HÀNH 6
6
8
10
1.3 HÀNH NÂNG CAO 12
15
2.1 TÓM LÝ 15
15
16
2.2 HÀNH 17
17
20
2.3 HÀNH NÂNG CAO 22
TRÚC QUEUE VÀ STACK 24
3.1 TÓM LÝ 24
24
3.1.2 Queue (h i) 24
3.2 HÀNH 25
25
27
RÚC CÂY 28
4.1 TÓM LÝ 28
28
4.1.2 Các thao tác 29
4.2 HÀNH 29
29
30
BÀI 5: 34
5.1 TÓM LÝ 34
34
Trang 45.1.2 Các thao tác 34
5.2 HÀNH 38
5.3 TRA HÀNH 45
TÀI THAM 46
Trang 5H c xong môn này, sinh viên ph i n c các v sau:
Trang 6u t i li n l p và g ch chân nh ng v không
Trang 7Các câu l nh (bao
g m câu l nh g i hàm con ra th c hi n);
} Các hàm con
n
ng s Các hàm con
Hàm main() {
Các câu l nh (bao
g m câu l nh g i hàm con ra th c hi n); }
Trang 8-
Tên hàm,
-
void Ten_Ham(danh sach
tham so neu co)
{
}
Trang 9KieuDL Ten_Ham (danh sach
tham so neu co)
Trang 10sau xong
1.1.2 M ng
M ng là m t t p h p các ph n t c nh có cùng m t ki u d li u, g i là ki u
ph n t Ki u ph n t có th là có các ki u b t k : ký t , s , chu i ký t
ta g i là m ng c a m ng hay m ng nhi u chi u) Ta có th chia m ng làm 2 lo i:
m ng m t chi u và m ng nhi u chi u
Cách khai báo m ng:
Cú pháp: <ki u d li u> <tên m ng> [<s ph n t >];
a bi n m ng
- [<S ph n t >]: là m t h ng s nguyên, cho bi t s ng ph n t t
Trang 13int TimTuyenTinh(int a[], int n, int X){ }
void SapXep(int a[], int n){ }
int TimNhiPhan(int a[], int n, int X){ }
Trang 14else
printf("Tim thay %d tai vi tri %d",X, vt);
sapxep(a,n);
printf("Mang sau khi sap tang dan:"); XuatMang(a,n);
printf("Nhap gia tri can tim: "); scanf("%d", &X);
Trang 15void nhapn(int &n)
void nhapDS(Sach a[], int n)
void xuatDS(Sach a[], int n)
int timTuanTu(Sach a[], int n, int X)
int timNhiPhan(Sach a[], int n, int X)
Trang 16int timTuanTu(Sach a[], int n, int X)
int timNhiPhan(Sach a[], int n, int X)
Trang 24void init (Node* &phead)
int isEmpty(Node* phead) Node* createNode(int x)
void insertFirst(Node* &phead, int x) void insertLast(Node* &phead, int x) void showList(Node* phead)
printf("Nhap so luong phan tu: "); scanf("%d", &n);
for(int i=0; i<n; i++)
Trang 28xuat1SV(SV x) void init (Node* &phead)
int isEmpty(Node* phead) Node* createNode(SV x)
void insertFirst(Node* &phead, SV x) void insertLast(Node* &phead, SV x) void showList(Node* phead)
-
void inputList(Node* &phead)
{
int n;
printf("Nhap so luong sinh vien:"); scanf("%d", &n);
for(int i=0; i<n; i++)
Trang 30(Last In First Out)
Hai thao tác chính trên Stack:
Trang 35struct node * left;
struct node * right;
} Node;
Trang 36CreateTree(proot ->left, a, begin, i-1);
CreateTree(proot ->right, a, i+1, end);
Trang 37if (proot->info <x)
return Remove(proot->right, x);
->info==x) Node* p, f, rp;
while ( rp->left != NULL) {
rp = rp->left; //rp qua bên trái
nút con trái là null p->info = rp-
Trang 38if (proot->info <x)
return Remove(proot->right, x);
->info==x) Node* p, f, rp;
while ( rp->left != NULL) {
rp = rp->left; //rp qua bên trái
nút con trái là null p->info = rp-
Trang 39e t lá, n a cây
g
h T nh
Trang 43-
Trang 44struct node *left;
struct node *right;
Trang 46p->height = 1 + max(getHeight(p->right), getHeight(p->left));
pivot->height = 1 + max(getHeight(pivot->right), getHeight(pivot->left));
Trang 47return NULL;
node *pivot = p->left;
p->left = pivot->right;
pivot->right = p;
p->height = 1 + max(getHeight(p->right), getHeight(p->left));
pivot->height = 1 + max(getHeight(pivot->right), getHeight(pivot->left));
Trang 48p->height = 1 + max(getHeight(p->left), getHeight(p->right));
return balance(p); // balance the tree
Trang 50node *temp = minValueNode(root->right);
node *root = NULL;
for (int i = 0; i < n; i++)
root = insert(root, a[i]);
return root;
}
-
Trang 51Bài 2:
5.3 KI M TRA TH C HÀNH
Trang 521
2
TPHCM
3 Lê Minh Hoàng (1999 -
4 Richard Neapolitan and Kumarss (2004) Foundations of Algorithms Using C++ Pseudocode Jones and Bartlett Publishers
5
6
7 ThS V