SlideShare a Scribd company logo
1 of 33
Download to read offline
DATA STRUCTURES
   & ALGORITHM
“ALGORITHMS + DATA STRUCTURES
                 = PROGRAMS”
           NIKLAUS WIRTH, 1976
                   Thiện Nguyễn
               August 26th, 2012
CẤU TRÚC DỮ LIỆU
       & THUẬT TOÁN ĐỂ LÀM GÌ?
•   Ứng dụng để giải quyết các bài toán
    thực tế
•   Cài đặt các chương trình
•   Tiền đề cho các môn học, lĩnh vực
    khác của Máy tính
•   …
Thuật toán là gì?

Là một tập hữu hạn các chỉ dẫn để
máy tính giải quyết một bài toán.
Các tính chất
của Thuật toán
•   Tính đơn nghĩa
•   Tính dừng
•   Tính đúng
•   Tính phổ dụng
•   Tính khả thi.
Độ phức tạp
          của Thuật toán
   Là khái niệm dùng để đánh giá
thời gian thực thi của một thuật
toán độc lập với máy tính
Các xác định
Độ phức tạp của Thuật toán
    •   Quy tắc Loại bỏ hằng số
    •   Quy tắc Cực đại
    •   Quy tắc cộng
    •   Quy tắc nhân.
Các độ phức tạp
        thường gặp
•   O(n)
•   O(n^k)
•   O(log(n))
•   O(n.log(n))
•   O(a^n)
•   O(n!).
Cấu trúc dữ liệu
•    Danh sách tuyến tính
•    Hàng đợi
•    Ngăn xếp
•    Cây.
Danh sách tuyến tính
     Là một cấu trúc dữ liệu
 mà mỗi phần tử chỉ tồn tại tối
 đa một phần tử liền sau.
Phân loại
Danh sách tuyến tính
                  Danh
                  sách


                                   Ràng
      Thường
                                   buộc


 Không                     FIFO            LIFO
          Có thứ tự
 thứ tự                  (queue)          (stack)
Danh sách tổng quát
•       Không có ràng buộc đối với các
        thao tác trên danh sách.
•       Không có ràng buộc khi
        chèn/xóa phần tử
•       Có 2 loại:
    o     Có thứ tự
    o     Không thứ tự.
Danh sách ràng buộc
•       Ràng buộc đối với các thao tác
        trên danh sách
•       Ràng buộc khi chèn/xóa phần tử.
•       Có 2 loại:
    o     Queue (FIFO: First-In-First-Out)
    o     Stack (LIFO: Last-In-First-Out).
Cài đặt danh sách
•   Dùng mảng:   •   Dùng DS Liên kết:

    int a[20];   struct Node{
                       int data;
                       int* next;
                 }
                 struct List{
                       Node* pHead;
                       int count;
                 }
Cài queue dùng mảng

                       Cách cài đặt Queue
  •                   Dùng mảng:
class Queue{                           public:
   private:                              Queue();
       int data[100];                    int size();
       int count;                        int front();
       int front;                        int rear();
       int rear;                         bool isEmpty();
                                         bool isFull();
                                         bool enQueue(int k);
                                         bool deQueue(int k);
                                   }
Cách cài đặt Queue
Cài queue bằng danh sách liên kết




  •                   Dùng danh sách liên kết:
            class Queue{              public:
               private:                 Queue();
                   int* front;          int size();
                   int* rear;           int front();
                   int count;           int rear();
                                        bool isEmpty();
                                        bool isFull();
                                        bool enQueue(int k);
                                        bool deQueue(int k);
                                      }
Cài stack bằng mảng


                        Cách cài đặt Stack
   •                   Dùng mảng:
             class Stack{                     public:
                private:                            Stack()
                    int data[100];                  int size();
                    int count;                      bool isEmpty();
                                                    bool isFull();
                                                    int top();
                                                    void push(int k);
                                                    int pop();
                                              }
Ghi chú: Tùy vào mục đích sử và phương pháp sử dụng
mà các method push, pop có thể trả về void, bool hay int
Cài stack bằng danh sách liên kết




                              Cách cài đặt Stack
   •                    Dùng danh sách liên kết:
              class Stack{                    public:
                 private:                           Stack();
                     Node* head                     int size();
                     Node* tail                     bool isEmpty();
                     int count                      bool isFull();
                     int count;                     int top();
                                                    void push(int k);
                                                    int pop();
                                              }
Ghi chú: Tùy vào mục đích sử và phương pháp sử dụng
mà các method push, pop có thể trả về void, bool hay int
Tree (Cây)
Cây là một cấu trúc
dữ liệu gồm một tập
hữu hạn các node
(nút), giữa các node
có một quan hệ
phân cấp gọi là quan
hệ “cha – con”.
Các khái niệm trong Cây

•    Root (node gốc)
•    Leaf (node lá)
•    Branch (node nhánh)
•    Level (cấp)
•    Height/Depth
     (chiều cao/chiều sâu)
•    Sub-tree (cây con).
Cây nhị phân

• Là cây có level
  bằng 2

 Cây k-phân:
Cây có level bằng k.
Cài đặt Cây nhị phân
struct Node{
     int data;
     int* left, right;
}
struct Tree{
     Node* root;
     int count;
}
Các phép duyệt cây
• Deep First Traverse:
   Pre-Oder
   In-Order
   Post-Oder
• Breadth First Traverse.
Deep First Traverse
  Pre-Oder (NLR)




 F->B->A->D->C->E->G->I->H.
Deep First Traverse
   In-Oder




 A->B->C->D->E->F->G->H->I.
Deep First Traverse
   Post-Oder




 A->C->E->D->B->H->I->G->F.
MỘT SỐ THƯ VIỆN TRONG C++

•   <cstdio>     •   <queue>
•   <iostream>   •   <stack>
•   <cstring>    •   <vector>
•   <cmath>      •   <algorithm>
                 •   …
THỰC HÀNH NHƯ THẾ NÀO?

• Giải đề trực tuyến.
SIMPLE
•   Insomnia cure
     Problem: http://codeforces.com/problemset/problem/148/A

•   Tram
     Problem: http://codeforces.com/problemset/problem/116/A

•   cAPS lOCK
     Problem: http://codeforces.com/problemset/problem/131/A

•   …
SORTING

•   Twins
Problem: http://codeforces.com/problemset/problem/148/A
Solution: http://codeforces.com/contest/160/submission/1646544
DFS

•   Party
Problem: http://codeforces.com/problemset/problem/115/A
Solution: http://codeforces.com/contest/115/submission/703831
GRAPH

•   Friend
Problem: http://codeforces.com/problemset/problem/94/B
Solution: http://codeforces.com/contest/94/submission/787035
QUESTIONS?
THANKS FOR LISTENING!

More Related Content

Viewers also liked

Bài giảng vantoc
Bài giảng vantocBài giảng vantoc
Bài giảng vantoc
hoanle1987
 
Programming Methodology Ii
Programming Methodology IiProgramming Methodology Ii
Programming Methodology Ii
mark
 
Xác Suất Thống Kê của Tống Đình Quỳ
Xác Suất Thống Kê của Tống Đình QuỳXác Suất Thống Kê của Tống Đình Quỳ
Xác Suất Thống Kê của Tống Đình Quỳ
hiendoanht
 

Viewers also liked (18)

FIFO 2015 VHN
FIFO 2015 VHNFIFO 2015 VHN
FIFO 2015 VHN
 
Ceec
CeecCeec
Ceec
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
OOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối TượngOOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối Tượng
 
V1 08-dieu-khien-qua-trinh
V1 08-dieu-khien-qua-trinhV1 08-dieu-khien-qua-trinh
V1 08-dieu-khien-qua-trinh
 
Bài giảng vantoc
Bài giảng vantocBài giảng vantoc
Bài giảng vantoc
 
Bao cao servo
Bao cao servoBao cao servo
Bao cao servo
 
Servo 2
Servo 2Servo 2
Servo 2
 
Servo 1
Servo 1Servo 1
Servo 1
 
Encoder
EncoderEncoder
Encoder
 
Programming Methodology Ii
Programming Methodology IiProgramming Methodology Ii
Programming Methodology Ii
 
Servo 3
Servo 3Servo 3
Servo 3
 
Encoder
EncoderEncoder
Encoder
 
Đệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh CậnĐệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh Cận
 
Xác Suất Thống Kê của Tống Đình Quỳ
Xác Suất Thống Kê của Tống Đình QuỳXác Suất Thống Kê của Tống Đình Quỳ
Xác Suất Thống Kê của Tống Đình Quỳ
 
THỰC HÀNH ĐIỆN TỬ TỪ A ĐẾN Z
THỰC HÀNH ĐIỆN TỬ TỪ A ĐẾN ZTHỰC HÀNH ĐIỆN TỬ TỪ A ĐẾN Z
THỰC HÀNH ĐIỆN TỬ TỪ A ĐẾN Z
 
Phân tích mã nguồn driver usb mouse
Phân tích mã nguồn driver usb mousePhân tích mã nguồn driver usb mouse
Phân tích mã nguồn driver usb mouse
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging Challenges
 

Similar to DS&A Reviews (11)

Oop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quátOop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quát
 
Oop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpOop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớp
 
Linq net
Linq net Linq net
Linq net
 
Stack &amp; queue
Stack &amp; queueStack &amp; queue
Stack &amp; queue
 
OOP_02_Java can ban.pdf
OOP_02_Java can ban.pdfOOP_02_Java can ban.pdf
OOP_02_Java can ban.pdf
 
Lect09 string
Lect09 stringLect09 string
Lect09 string
 
C đến C++ phần 1
C đến C++ phần 1C đến C++ phần 1
C đến C++ phần 1
 
Lect05 array
Lect05 arrayLect05 array
Lect05 array
 
Ctdl C03
Ctdl C03Ctdl C03
Ctdl C03
 
Java ease learning(1)
Java ease learning(1)Java ease learning(1)
Java ease learning(1)
 
Bert for question answering on SQuAD 2.0
Bert for question answering on SQuAD 2.0Bert for question answering on SQuAD 2.0
Bert for question answering on SQuAD 2.0
 

More from Nguyễn Quang Thiện (6)

Phương pháp học Tiếng Anh thần kỳ
Phương pháp học Tiếng Anh thần kỳPhương pháp học Tiếng Anh thần kỳ
Phương pháp học Tiếng Anh thần kỳ
 
[NEWBIES] MBTI
[NEWBIES] MBTI[NEWBIES] MBTI
[NEWBIES] MBTI
 
MBTI & Hướng Nghiệp 2.0
MBTI & Hướng Nghiệp 2.0MBTI & Hướng Nghiệp 2.0
MBTI & Hướng Nghiệp 2.0
 
Tư Vấn Tuyển Sinh 2.0
Tư Vấn Tuyển Sinh 2.0Tư Vấn Tuyển Sinh 2.0
Tư Vấn Tuyển Sinh 2.0
 
MBTI & HƯỚNG NGHIỆP
MBTI & HƯỚNG NGHIỆPMBTI & HƯỚNG NGHIỆP
MBTI & HƯỚNG NGHIỆP
 
T&T - TƯ VẤN TUYỂN SINH 2013
T&T - TƯ VẤN TUYỂN SINH 2013T&T - TƯ VẤN TUYỂN SINH 2013
T&T - TƯ VẤN TUYỂN SINH 2013
 

Recently uploaded

C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
dnghia2002
 
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
ltbdieu
 
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận HạnTử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Kabala
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
ChuThNgnFEFPLHN
 

Recently uploaded (20)

20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
20 ĐỀ DỰ ĐOÁN - PHÁT TRIỂN ĐỀ MINH HỌA BGD KỲ THI TỐT NGHIỆP THPT NĂM 2024 MÔ...
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
 
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdfGiáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
 
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
 
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
 
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận HạnTử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiện
 
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhàBài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
 
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.ppt
 
Kiến thức cơ bản về tư duy số - VTC Net Viet
Kiến thức cơ bản về tư duy số - VTC Net VietKiến thức cơ bản về tư duy số - VTC Net Viet
Kiến thức cơ bản về tư duy số - VTC Net Viet
 
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng TạoĐề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
 
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfxemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
bài thi bảo vệ nền tảng tư tưởng của Đảng.docx
bài thi bảo vệ nền tảng tư tưởng của Đảng.docxbài thi bảo vệ nền tảng tư tưởng của Đảng.docx
bài thi bảo vệ nền tảng tư tưởng của Đảng.docx
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
 

DS&A Reviews

  • 1. DATA STRUCTURES & ALGORITHM “ALGORITHMS + DATA STRUCTURES = PROGRAMS” NIKLAUS WIRTH, 1976 Thiện Nguyễn August 26th, 2012
  • 2. CẤU TRÚC DỮ LIỆU & THUẬT TOÁN ĐỂ LÀM GÌ? • Ứng dụng để giải quyết các bài toán thực tế • Cài đặt các chương trình • Tiền đề cho các môn học, lĩnh vực khác của Máy tính • …
  • 3. Thuật toán là gì? Là một tập hữu hạn các chỉ dẫn để máy tính giải quyết một bài toán.
  • 4. Các tính chất của Thuật toán • Tính đơn nghĩa • Tính dừng • Tính đúng • Tính phổ dụng • Tính khả thi.
  • 5. Độ phức tạp của Thuật toán Là khái niệm dùng để đánh giá thời gian thực thi của một thuật toán độc lập với máy tính
  • 6. Các xác định Độ phức tạp của Thuật toán • Quy tắc Loại bỏ hằng số • Quy tắc Cực đại • Quy tắc cộng • Quy tắc nhân.
  • 7. Các độ phức tạp thường gặp • O(n) • O(n^k) • O(log(n)) • O(n.log(n)) • O(a^n) • O(n!).
  • 8. Cấu trúc dữ liệu • Danh sách tuyến tính • Hàng đợi • Ngăn xếp • Cây.
  • 9. Danh sách tuyến tính Là một cấu trúc dữ liệu mà mỗi phần tử chỉ tồn tại tối đa một phần tử liền sau.
  • 10. Phân loại Danh sách tuyến tính Danh sách Ràng Thường buộc Không FIFO LIFO Có thứ tự thứ tự (queue) (stack)
  • 11. Danh sách tổng quát • Không có ràng buộc đối với các thao tác trên danh sách. • Không có ràng buộc khi chèn/xóa phần tử • Có 2 loại: o Có thứ tự o Không thứ tự.
  • 12. Danh sách ràng buộc • Ràng buộc đối với các thao tác trên danh sách • Ràng buộc khi chèn/xóa phần tử. • Có 2 loại: o Queue (FIFO: First-In-First-Out) o Stack (LIFO: Last-In-First-Out).
  • 13. Cài đặt danh sách • Dùng mảng: • Dùng DS Liên kết: int a[20]; struct Node{ int data; int* next; } struct List{ Node* pHead; int count; }
  • 14. Cài queue dùng mảng Cách cài đặt Queue • Dùng mảng: class Queue{ public: private: Queue(); int data[100]; int size(); int count; int front(); int front; int rear(); int rear; bool isEmpty(); bool isFull(); bool enQueue(int k); bool deQueue(int k); }
  • 15. Cách cài đặt Queue Cài queue bằng danh sách liên kết • Dùng danh sách liên kết: class Queue{ public: private: Queue(); int* front; int size(); int* rear; int front(); int count; int rear(); bool isEmpty(); bool isFull(); bool enQueue(int k); bool deQueue(int k); }
  • 16. Cài stack bằng mảng Cách cài đặt Stack • Dùng mảng: class Stack{ public: private: Stack() int data[100]; int size(); int count; bool isEmpty(); bool isFull(); int top(); void push(int k); int pop(); } Ghi chú: Tùy vào mục đích sử và phương pháp sử dụng mà các method push, pop có thể trả về void, bool hay int
  • 17. Cài stack bằng danh sách liên kết Cách cài đặt Stack • Dùng danh sách liên kết: class Stack{ public: private: Stack(); Node* head int size(); Node* tail bool isEmpty(); int count bool isFull(); int count; int top(); void push(int k); int pop(); } Ghi chú: Tùy vào mục đích sử và phương pháp sử dụng mà các method push, pop có thể trả về void, bool hay int
  • 18. Tree (Cây) Cây là một cấu trúc dữ liệu gồm một tập hữu hạn các node (nút), giữa các node có một quan hệ phân cấp gọi là quan hệ “cha – con”.
  • 19. Các khái niệm trong Cây • Root (node gốc) • Leaf (node lá) • Branch (node nhánh) • Level (cấp) • Height/Depth (chiều cao/chiều sâu) • Sub-tree (cây con).
  • 20. Cây nhị phân • Là cây có level bằng 2  Cây k-phân: Cây có level bằng k.
  • 21. Cài đặt Cây nhị phân struct Node{ int data; int* left, right; } struct Tree{ Node* root; int count; }
  • 22. Các phép duyệt cây • Deep First Traverse:  Pre-Oder  In-Order  Post-Oder • Breadth First Traverse.
  • 23. Deep First Traverse  Pre-Oder (NLR) F->B->A->D->C->E->G->I->H.
  • 24. Deep First Traverse  In-Oder A->B->C->D->E->F->G->H->I.
  • 25. Deep First Traverse  Post-Oder A->C->E->D->B->H->I->G->F.
  • 26. MỘT SỐ THƯ VIỆN TRONG C++ • <cstdio> • <queue> • <iostream> • <stack> • <cstring> • <vector> • <cmath> • <algorithm> • …
  • 27. THỰC HÀNH NHƯ THẾ NÀO? • Giải đề trực tuyến.
  • 28. SIMPLE • Insomnia cure Problem: http://codeforces.com/problemset/problem/148/A • Tram Problem: http://codeforces.com/problemset/problem/116/A • cAPS lOCK Problem: http://codeforces.com/problemset/problem/131/A • …
  • 29. SORTING • Twins Problem: http://codeforces.com/problemset/problem/148/A Solution: http://codeforces.com/contest/160/submission/1646544
  • 30. DFS • Party Problem: http://codeforces.com/problemset/problem/115/A Solution: http://codeforces.com/contest/115/submission/703831
  • 31. GRAPH • Friend Problem: http://codeforces.com/problemset/problem/94/B Solution: http://codeforces.com/contest/94/submission/787035