vào cây BST.. Xóa nút lá trên cây BST.. Xóa nút có hai cây con trên cây BST... Interchange Sort, Selection Sort, Insertion Sort, Shell Sort, Quick Sort, Merge Sort, Radix Sort... Các tha
Trang 1
C
Biên
www.hutech.edu.vn
Trang 2tailieuhoctap@hutech.edu.vn
Trang 3I
V
BÀI 1: 1
1.1VAITR C AC TRÚCD L TRONG NTINH C 1
1.2CÁCTIÊU GIÁ TRÚC 2
1.3 HOÁ 3
1.4 3
1.5 CÓ TRÚC 4
1.6 PH CT PC AGI ITHU T 6
6
1.6.2 Cách 7
TÓM 8
CÂU ÔN 9
BÀI 2: T M KI M 10
2.1GI ITHI UV B ITO NT MKI M 10
2.2T MKI MTUY NT NH 11
2.3TÌM PHÂN 12
TÓM 14
CÂU ÔN 14
BÀI 3: S P X P 15
3.1GI ITHI UV B ITO NS PX P 15
15
15
3.2CÁC 16
16
18
19
Insertion Sort 21
22
3.2.6 Quick Sort 24
Merge Sort 26
27
TÓM 30
CÂU ÔN 30
BÀI 4: DANH SÁCH 31
4.1KH INI M 31
Trang 44.2C UTR CDANHS CH 31
4.3 PH PC I TDANHS CH 34
4.4HI NTH CDANHS CHK 35
4.4.1 .35
4.4.2 Các t c v 36
4.5HI NTH CDANHS CHLIÊNK T 40
4.5.1 .40
40
4.5.3 .41
4.6C CLO IDANHS CHLIÊNK TKH C 45
45
45
TÓM 46
CÂU ÔN 46
C STACK 48
5.1 STACK 48
48
5.1 49
49
5.2 STACK 50
50
51
5.3M TS B ITO N NGD NGSTACK 52
TÓM 53
CÂU ÔN 53
BÀI 6: C 54
6.1 QUEUE 54
6.2 QUEUE 56
6.2.1 Dùng .56
58
6.3H NG IC TIÊN 58
TÓM 59
CÂU ÔN 59
C CÂY - 60
7.1 TRÚCCÂY QUÁT 60
7.2CÂY PHÂN 61
7.3MÔ CÂY PHÂN 63
7.3.1 .63
63
7.3.3 Ba p .65
7.4 CÂY PHÂN QUÁT 66
Trang 57.4.1 66
7.4.2 67
TÓM 71
CÂU ÔN 71
- BST 72
8.1 72
8.2CÀI CÂY PHÂNTÌM 73
TÓMT T 77
CÂU ÔN 77
- AVL 78
9.1 CÂY PHÂNTÌM CÂN 78
9.2CÁCTÁC XOAY 79
80
81
9.3THÊM NÚTVÀOCÂYAVL 82
9.4CÀI CÂYAVL 84
84
85
TÓM 87
CÂU ÔN 87
TÀI THAM 88
Trang 6Hình 3.1 27
34
35
Hình 4.3 Thêm n t 18 v o v tr 3 trong danh s ch 37
Hình 4.4 X a n t 15 v tr 2 trong danh s ch 38
Hình 4.5 Danh s ch liên k 40
Hình 4.6 Danh s ch liên k t v ng 45
Hình 4.7 M t n t c a danh s ch liên k t k p 45
Hình 4.8 45
Hình 5.1: Stack v thao t c push, pop trên n 48
54
sert và remove trên Queue 55
Hình 6.3 C t Queue b ng danh s ch liên k t 58
Hình 7.1 60
Hình 7.2 62
Hình 7.3 62
Hình 7.4 63
Hình 7.5 66
Hình 8.1 72
Hình 8.2 vào cây BST 74
Hình 8.3 Xóa nút lá trên cây BST 75
Hình 8.4 75
Hình 8.5 Xóa nút có hai cây con trên cây BST 75
Hình 9.1 79
Hình 9.2 80
Hình 9.3 80
Hình 9.4 81
Hình 9.5 81
Hình 9.6 83
Hình 9.7 83
Hình 9.8 Xoay kép 84
Trang 7Bài 1
Bài 2 Bài này
Bài 4 DANH SÁCH
tack
Trang 9h c ph c bài toán th c t c n chú tr ng hai v :
- T ch c bi u di ng th c t : Các thành ph n d li u th c t ng,
ng ch ng nh ng quan h hình tin h c c a bài toán, c n ph i t ch c xây d ng các c u trúc thích h p nh t sao cho v a có th ph n ánh chính xác các d li u th c t này, v a có th d dàng
x lý Công vi c g i là xây d ng c u trúc d li u cho bài toán
- Xây d ng các thao tác x lý d li u: T nh ng yêu c u x lý th c t , c n tìm ra
các gi i thu nh trình t các thao tác máy tính ph i thi hành
cho ra k t qu mong mu c xây d ng gi i thu t cho bài toán.
Trang 10Tuy nhiên, khi gi i quy t m ng có khuynh
ng ch chú tr n vi c xây d ng gi i thu m quan tr ng c a vi c
t ch c d li u trong bài toán Gi i thu t ph n ánh các phép x ng x
lý c a gi i thu t l i là d li u, chính d li u ch ng các thông tin c n thi th c
lo i d li u nào và khi ch n l a c u trúc d li n ph i hi u rõ nh ng thao tác
li u có m i quan h ch t ch v c th hi n qua công th c:
C u trúc d li u + Gi i thu
V i m t c u trúc d li n, s có nh ng gi i thu ng, phù h p Khi
ng ép, thi u t nhiên trên m t c u trúc không phù h a, m t c u trúc d
li u t t s giúp gi i thu t x lý t phát huy tác d ng t ng
Trang 111.3
data (operation
Trang 12float 4 byte 3.4E-38
3.4E38
Các giá 3.4E-
Trang 15a ba
i b
i b
a i
2
) 1 (
n in
a i
2
) 1 ( 2
2
1
2
n n
i
n
) 1 2 )(
1 (1
in
) 1 ( 2
2 1
i
n
i
Trang 18SV, h a ch kh a t m ki m l h tên K t qu tr v l : thông tin
Trang 19int Search(int a[], int n, int key)
Trang 202.3
[left, , rightmid=(left+right)/2
Trang 21int BinarySearch(int a[], int n, int key){
int left = 0, right = n-1, mid;
while (left <= right){
Trang 25cho :
Trang 26Swap(A[j], A[j-1]); A[j] và A[j-1]
}
void Swap(int &x, int &y){
Trang 27void InchangeSort(int A[],int n){
for(int i=0; i<n-1; i++)
Trang 29Danh sách sau khi chèn
Trang 30Insertion Sort:
void InsertionSort(int A[], int n){
for(int i=1; i < n; i++){
h n), chia dãy thành h dãy
Dãy con 1: A[0], A[0+h], A[0+2h]
Dãy con 2: A[1], A[1+h], A[1+2h]
Dãy con 3: A[2], A[2+h], A[2+2h]
Dãy con h: A[h], A[2h], A[3h]
Trang 31void ShellSort(int a[], int n, int h[], int k){
int step, i, pos, x, len;
for(step = 0; step < k; step++) {
Trang 33}
Trang 34void mergesort(int A[], int n){
int i,j,k,low1, up1, low2, up2,size;
Trang 37void RadixSort(long a[], int n){
int i, j, d, digit, num;
Trang 38Interchange Sort, Selection Sort, Insertion Sort, Shell Sort, Quick Sort, Merge Sort, Radix Sort
Trang 400=<pos<=num 1
Trang 42t:
Trang 43Hình 4.2
So s nh hai ki u c t:
i
insert, remove
Trang 45if(pos <0 || pos> ListSize(plist))
Trang 49typedef Node* NODEPTR;
4.5.3
(minh h a v i info c a n t ki u int) Init, IsEmpty, InsertFirst, InsertAfter,
DeleteFirst, DeleteAfter, DeleteAll, ShowList, Search, Sort
Trang 50p->next=tam;
}
- T c v DeleteFirst: x a n u c a danh s ch liên k t
void DeleteFirst(NODEPTR &pHead){
Trang 54C t theo ki u k ti p -> hi n th c danh s ch k (d ng m ng m t chi u
C t theo ki u liên k t -> hi n th c danh s ch liên k
D ng m r ng c a danh s ch liên k ch liên k t v ng, danh s ch liên k t k p, danh s ch liên k t v ng k p
Trang 55d Tìm sinh viên có tên là X
Câu 4: Vi nh hi n th c danh s ch liên k
Câu 6:
cùng Các thao tác trên danh sách:
Init, IsEmpty, CreateNode, InsertFrist, InsertLast, InsertPrev, InsertNext, InsertPos, DeleteFirst, DeleteLast, DeleteNext, DeletePrev, DeletePos, ShowList, ShowInvert, Search, Sort ClearList
Trang 56v o sau ra c - LIFO (Last In First Out)
Hai thao tác chính trên Stack:
Trang 59typedef Node* NODEPTR;
typedef NODEPTR STACk;
void Push(STACK &s, DataType x){
NODEPTR p = new Node;
p->info = x;
p->next = s;
s = p;
}
Trang 63- insert thêm nút
- remove
hình a) insert (q,A)
Trang 66sau Hàng priority queue)
-
-
Trang 67isEmpty, Insert, Remove
Trang 68Hình 7.1
(root) là nút không có nút cha,
Trang 69Trang 72
- CreateNode
- InsertLeft
nút p nút x
Trang 74struct nodetype *left;
struct nodetype *right;
}Node;
Trang 75typedef Node *NODEPTR;
Trang 77printf("\n Nut da co con ben phai");
Trang 78printf("\n Nut khong co con ben phai");
Trang 84int Remove(NODEPTR &proot, int x) {
Trang 89printf("\n Khong the xoay trai vi cay rong");
Trang 91ya
bf(ya)=1, nút lá thêm vào cây là nút sau bên trái ya
Trang 92int bf; //balance factor
struct nodetype *left, *right;
};
typedef struct nodetype *NODEPTR;
Trang 939.4.2
void Insert(NODEPTR *pavltree, int x)
{
//fp la nut cha cua p, q la con cua p
//ya la nut truoc gan nhat co the mat can bang, fya la cha cua ya
//s la nut con cua ya theo huong mat can bang
//imbal=1: lech trai; =-1 lech phai
Trang 961
2
TPHCM
3 Lê Minh Hoàng (1999 - 2002)
4 Richard Neapolitan and Kumarss (2004) Foundations of Algorithms Using C++ Pseudocode Jones and Bartlett Publishers
6