Bài giảng kỹ thuật lập trình – chương 7 cấu trúc dữ liệu

121 5 0
Bài giảng kỹ thuật lập trình – chương 7 cấu trúc dữ liệu

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ng c om Trịnh Thành Trung (ThS) trungtt@soict.hust.edu.vn cu u du on g th a n co Bài CẤU TRÚC DỮ LIỆU CuuDuongThanCong.com https://fb.com/tailieudientucntt n th a cu u du on g Phải xác định o Các liệu liên quan đến toán o Các thao tác cần thiết để giải toán co ng c om Các toán thực tế thường phức tạp CuuDuongThanCong.com https://fb.com/tailieudientucntt Mô tả  Các liệu cấu thành  Mối liên kết mặt cấu trúc liệu cu u du on g n th a cách tổ chức thao tác có hệ thống liệu co ng c om Cấu trúc liệu CuuDuongThanCong.com Cung cấp thao tác liệu Đặc trưng cho kiểu liệu https://fb.com/tailieudientucntt .c om Dữ liệu, kiểu liệu & cấu trúc liệu Machine Level Data Storage th a 3.1415 28 du on g Primitive Data Types n co ng 0100110001101001010001 'A' array cu u Basic Data Structures High-Level Data Structures stack queue hash table CuuDuongThanCong.com https://fb.com/tailieudientucntt list tree .c ng co n ▫C/C++: int, long, char, bool ▫Thao tác số nguyên: + - * / CuuDuongThanCong.com Kiểu liệu có cấu trúc (structured data type) ▪Được xây dựng từ kiểu liệu (cơ bản, có cấu trúc) khác ▪Có thể ngơn ngữ lập trình định nghĩa sẵn lập trình viên tự định nghĩa th a cu u du on g Kiểu liệu (primitive data type) ▪Đại diện cho liệu giống nhau, phân chia nhỏ ▪Thường ngơn ngữ lập trình định nghĩa sẵn ▪Ví dụ om Các kiểu liệu https://fb.com/tailieudientucntt om c cu u du on g Mảng Danh sách Ngăn xếp Hàng đợi Cây th a n co ng Nội dung CuuDuongThanCong.com https://fb.com/tailieudientucntt om c ng n th a du on g u cu Array co Mảng CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Mảng Array co ng ▪ Dãy hữu hạn phần tử liên tiếp có kiểu tên ▪ Một hay nhiều chiều Cú pháp du on g th a n ▫ C không giới hạn số chiều mảng DataType ArrayName[size]; cu u mảng nhiều chiều DataType ArrayName[size 1][size 2] [size n]; CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Khởi tạo giá trị mảng co ng ▪ C1 Khi khai báo cu u du on g th a n float y[5] = { 3.2, 1.2, 4.5, 6.0, 3.6 } int m[6][2] = { { 1, }, { 1, }, { 2, }, { 2, }, { 3, }, { 3, } }; char s1[6] = { 'H', 'a', 'n', 'o', 'i', '\0' }; //hoặc char s1[6] = "Hanoi"; char s1[] = "Dai hoc Bach Khoa Hanoi"; //L = 24 int m[][] = { { 1, 2, }, { 4, 5, } }; ▪ C2 Khai báo gán giá trị cho phần tử mảng int m[4]; m[0] = 1; m[1] = 2; m[2] = 3; m[3] = 4; CuuDuongThanCong.com https://fb.com/tailieudientucntt om c ng co n th a u cu List du on g Danh sách CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Ứng dụng nhị phân co n th a cu u ▪ Cây định du on g ▫ Tính giá trị biểu thức ▫ Tính đạo hàm ng ▪ Cây biểu diễn biểu thức CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Cây biểu diễn biểu thức u du on g th a n co Mỗi nút chứa toán hạng Mỗi nút chứa toán tử Cây trái phải nút toán tử thể biểu thức cần đánh giá trước thực toán tử nút gốc cu ng ▪ loại nhị phân đặc biệt, đó: CuuDuongThanCong.com https://fb.com/tailieudientucntt ng ▪ Các mức thứ tự ưu tiên c om Cây biểu diễn biểu thức cu u du on g th a n co ▫ Các mức (độ sâu) nút thứ tự ưu tiên tương đối chúng biểu thức (không cần dùng ngoặc để thể thứ tự ưu tiên) ▫ Các phép tốn mức cao tính sau các phép tốn có mức thấp ▫ Phép tốn gốc ln thực cuối CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Cây biểu diễn biểu thức cu u du on g th a n co ng ▪ Dễ dàng để tạo biểu thức tiền tố, trung tố, hậu tố ▪ Trung tố: ( ( -5 ) * ( ( + ) / ) ) ▪ Tiền tố: * -8 / + ▪ Hậu tố: -4 + / * (thực chất phép duyệt theo thứ tự giữa, trước sau) CuuDuongThanCong.com https://fb.com/tailieudientucntt .c ng co ▪ Mỗi nút có trỏ om Cài đặt biểu thức cu u du on g th a n struct TreeNode { InfoNode info ;// Dữ liệu TreeNode *left ;// Trỏ tới nút trái TreeNode *right ; // Trỏ tới nút phải }; CuuDuongThanCong.com https://fb.com/tailieudientucntt .c ng co ▪ InfoNode có dạng om Cài đặt biểu thức union cu u du on g th a n enum OpType { OPERATOR, OPERAND } ; struct InfoNode { OpType whichType; union // ANONYMOUS { char operator; int operand ; } }; CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Cài đặt biểu thức Eval(ptr->right) ) ; Eval(ptr->right) ) ; cu u du on g th a n co ng int Eval(TreeNode* ptr){ switch(ptr->info.whichType) { case OPERAND : return ptr->info.operand; case OPERATOR : switch ( tree->info.operation ){ case ‘+’: return ( Eval(ptr->left) + case ‘-’: return ( Eval(ptr->left) – case ‘*’: return ( Eval(ptr->left) * case ‘/’: return ( Eval(ptr->left) / } } } CuuDuongThanCong.com Eval(ptr->right) ) ; Eval(ptr->right) ) ; https://fb.com/tailieudientucntt ng ▪ Biểu diễn giống nhị phân? c om Cây tổng quát du on g th a n co ▫ Mỗi nút chứa giá trị trỏ trỏ đến nút nó? ▫ Bao nhiêu trỏ cho nút? Không hợp lý cu u ▪ Mỗi nút chứa giá trị trỏ trỏ đến “tập” nút ▫ Xây dựng “tập”? CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Cây tổng quát ng ▪ Mỗi nút có trỏ: cu u du on g th a n co ▫ trỏ trỏ đến nút nó, ▫ trỏ trỏ đến nút anh em kề với CuuDuongThanCong.com https://fb.com/tailieudientucntt cu u du on g th a n co ng c om Ví dụ Cây tổng quát CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Duyệt tổng quát ng ▪ Thứ tự trước: Thăm gốc Duyệt thứ theo thứ tự trước Duyệt lại theo thứ tự trước Duyệt thứ theo thứ tự Thăm gốc Duyệt lại theo thứ tự Duyệt thứ theo thứ tự sau Duyệt lại theo thứ tự sau Thăm gốc n th a du on g cu ▪ Thứ tự sau: u ▪ Thứ tự co CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Ứng dụng Cây định th a n co ng ▪ Dùng để biểu diễn lời giải toán cần định lựa chọn ▪ Bài toán đồng tiền vàng: du on g ▫ Có đồng tiền vàng a, b, c, d, e, f, g, h ▫ Có đồng có trọng lượng khơng chuẩn ▫ Sử dụng cân Roberval (2 đĩa) ▫ Output: cu u ▸ Đồng tiền k chuẩn nặng hay nhẹ ▸ Số phép cân CuuDuongThanCong.com https://fb.com/tailieudientucntt cu u du on g th a n co ng c om Cây định CuuDuongThanCong.com https://fb.com/tailieudientucntt cu u du on g th a n co ng c om void EightCoins(a, b, c, d, e, f, g, h) { if (a+b+c == d+e+f) { if (g > h) Compare(g, h, a); else Compare(h, g, a); } else if (a+b+c > d+e+f){ if (a+d == b+e) Compare(c, f, a); else if (a+d > b+e) Compare(a, e, b); else Compare(b, d, a); } else{ if (a+d == b+e) Compare(f,c,a); else if (a+d > b+e) Compare(d, b, a); else Compare(e, a, b); } } // so sánh x với đồng tiền chuẩn z void Compare(x,y,z){ if(x>y) printf(“x nặng”); else printf(“y nhẹ”); } CuuDuongThanCong.com https://fb.com/tailieudientucntt om c ng th a n co Thanks! du on g Any questions? cu u Email me at trungtt@soict.hust.edu.vn CuuDuongThanCong.com Presentation template by SlidesCarnival https://fb.com/tailieudientucntt ... Kiểu liệu có cấu trúc (structured data type) ▪Được xây dựng từ kiểu liệu (cơ bản, có cấu trúc) khác ▪Có thể ngơn ngữ lập trình định nghĩa sẵn lập trình viên tự định nghĩa th a cu u du on g Kiểu liệu. .. Mối liên kết mặt cấu trúc liệu cu u du on g n th a cách tổ chức thao tác có hệ thống liệu co ng c om Cấu trúc liệu CuuDuongThanCong.com Cung cấp thao tác liệu Đặc trưng cho kiểu liệu https://fb.com/tailieudientucntt... cấp thao tác liệu Đặc trưng cho kiểu liệu https://fb.com/tailieudientucntt .c om Dữ liệu, kiểu liệu & cấu trúc liệu Machine Level Data Storage th a 3.1415 28 du on g Primitive Data Types n co

Ngày đăng: 28/12/2021, 19:12

Hình ảnh liên quan

hiện thực tuyến tính - Bài giảng kỹ thuật lập trình – chương 7 cấu trúc dữ liệu

hi.

ện thực tuyến tính Xem tại trang 65 của tài liệu.
Mô hình - Bài giảng kỹ thuật lập trình – chương 7 cấu trúc dữ liệu

h.

ình Xem tại trang 68 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan