Tìm hiểu các dữ liệu phức hộp trong lập trình pptx

31 307 1
Tìm hiểu các dữ liệu phức hộp trong lập trình pptx

Đ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

2 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Nộidung chương 4 4.1 Cấutrúcdữ liệulàgì? 4.2 Mảng và quảnlýbộ nhớ₫ộng 4.2 Xây dựng cấu trúc Vector 4.3 Xây dựng cấutrúcList Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com TÌM HIỂU CÁC DỮ LIỆU PHỨC HỘP TRONG LẬP TRÌNH NỘI DUNG BÀI HỌC: 3 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu 4.1 Giớithiệuchung  Phầnlớn các bài toán trong thựctế liên quan tớicác dữ liệuphứchợp, những kiểudữ liệucơ bảntrong ngôn ngữ lập trình không ₫ủ biểudiễn  Ví dụ: —Dữ liệu sinh viên: Họ tên, ngày sinh, quê quán, mã số SV, —Môhìnhhàmtruyền: Đathứctử số, ₫athứcmẫusố —Môhìnhtrạng thái: Các ma trận A, B, C, D —Dữ liệuquátrình: Tên₫ạilượng, dải ₫o, giá trị, ₫ơnvị, thời gian, cấpsaisố, ngưỡng giá trị, — Đốitượng ₫ồ họa: Kích thước, màu sắc, ₫ường nét, phông chữ,  Phương pháp biểudiễndữ liệu: ₫ịnh nghĩakiểudữ liệumớisử dụng cấu trúc (struct, class, union, ) Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 4 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Vấn ₫ề: Biểudiễntậphợpdữ liệu  Đasố những dữ liệuthuộcmột ứng dụng có liên quan với nhau => cầnbiểudiễntrongmộttậphợpcócấu trúc, ví dụ: — Danhsáchsinhviên: Cácdữ liệu sinh viên ₫ượcsắpxếptheo thứ tự Alphabet —Mộ hình tổng thể cho hệ thống ₫iều khiển: Bao gồm nhiều thành phầntương tác —Dữ liệuquátrình: Mộttậpdữ liệucóthể mang giá trị của một ₫ạilượng vào các thời ₫iểmgián₫oạn, các dữ liệu ₫ầu vào liên quan tớidữ liệu ₫ầura — Đốitượng ₫ồ họ a: Mộtcửasổ bao gồm nhiều ₫ốitượng ₫ồ họa, mộtbảnvẽ cũng bao gồm nhiều ₫ốitượng ₫ồ họa  Thông thường, các dữ liệutrongmộttậphợpcócùng kiểu, hoặcítralàtương thích kiểuvớinhau  Kiểumảng không phải bao giờ cũng phù hợp! Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 5 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Vấn ₫ề: Quảnlý(tậphợp) dữ liệu  Sử dụng kếthợpmộtcáchkhéoléokiểucấutrúcvà kiểumảng ₫ủ ₫ể biểudiễncáctậphợpdữ liệubấtkỳ  Các giảithuật (hàm) thao tác vớidữ liệu, nhằmquản lý dữ liệumộtcáchhiệuquả: —Bổ sung mộtmụcdữ liệumớivàomột danh sách, mộtbảng, mộttậphợp, —Xóamộtmụcdữ liệutrongmột danh sách, bảng, tậphợp, —Tìmmộtmụcdữ liệutrongmột danh sách, bảng tậphợp, theo mộttiêuchuẩncụ thể —Sắpxếpmột danh sách theo mộttiêuchuẩnnào₫ó — Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 6 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu QuảnlýDL thế nàolàhiệuquả?  Tiếtkiệmbộ nhớ: Phần "overhead" không ₫áng kể so vớiphầndữ liệuthực  Truy nhập nhanh, thuậntiện: Thờigiancầnchobổ sung, tìm kiếm và xóa bỏ các mụcdữ liệuphảingắn  Linh hoạt: Số lượng các mụcdữ liệu không (hoặcít) bị hạnchế cố₫ịnh, không cầnbiếttrướckhitạocấu trúc, phù hợpvớicả bài toán nhỏ và lớn  Hiệuquả quảnlýdữ liệuphụ thuộcvào —Cấutrúcdữ liệu ₫ượcsử dụng —Giảithuật ₫ượcápdụng cho bổ sung, tìm kiếm, sắpxếp, xóa bỏ Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 7 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Các cấutrúcdữ liệu thông dụng  Mảng (nghĩarộng): Tậphợpcácdữ liệucóthể truy nhậptùyý theochỉ số  Danh sách (list): Tậphợpcácdữ liệu ₫ược móc nối ₫ôi mộtvớinhauvàcóthể truy nhậptuầntự  Cây (tree): Tậphợpcácdữ liệu ₫ược móc nốivới nhau theo cấutrúccây, cóthể truy nhậptuầntự từ gốc —Nếumỗi nút có tối ₫a hai nhánh: cây nhị phân (binary tree)  Bìa, bảng (map): Tậphợpcácdữ liệucósắpxếp, có thể truy nhậprất nhanh theo mã khóa (key)  Hàng ₫ợi (queue): Tậphợpcácdữ liệucósắpxếp tuầntự, chỉ bổ sung vào từ một ₫ầuvàlấyratừ₫ầu còn lại Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 8 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Các cấutrúcdữ liệu thông dụng (tiếp)  Tậphợp(set): Tậphợpcácdữ liệu ₫ượcsắpxếptùyý nhưng có thể truy nhậpmộtcáchhiệuquả  Ngănxếp (stack): Tậphợpcácdữ liệu ₫ượcsắpxếp tuầntự, chỉ truy nhập ₫ượctừ một ₫ầu  Bảng hash (hash table): Tậphợpcácdữ liệu ₫ượcsắp xếpdựatheomộtmãsố nguyên tạoratừ mộthàm ₫ặ cbiệt  Bộ nhớ vòng (ring buffer): Tương tự như hàng ₫ợi, nhưng dung lượng có hạn, nếuhếtchỗ sẽ₫ượcghi quay vòng  Trong toán họcvàtrong₫iềukhiển: vector, ma trận, ₫athức, phân thức, hàm truyền, Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 9 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu 4.2 Mảng và quảnlýbộ nhớ₫ộng  Mảng cho phép biểudiễnvàquảnlýdữ liệumộtcách khá hiệuquả: — Đọcvàghidữ liệurất nhanh qua chỉ số hoặcqua ₫ịachỉ —Tiếtkiệmbộ nhớ  Các vấn ₫ề củamảng tĩnh: VD: Student student_list[100]; —Số phầntử phảilàhằng số (biếttrước khi biên dịch, ngườisử dụng không thể nhậpsố phầntử, không thể cho số phầntừ là mộtbiến) => kém linh hoạt —Chiếmchỗ cứng trong ngănxếp(₫ốivớibiếncụcbộ) hoặc trong bộ nhớ dữ liệuchương trình (₫ốivớibiếntoàncục) => sử dụng bộ nhớ kém hi ệuquả, kém linh hoạt Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 10 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Mảng ₫ộng  Mảng ₫ộng là mộtmảng ₫ượccấpphátbộ nhớ theo yêu cầu, trong khi chương trình chạy #include <stdlib.h> /* C */ int n = 50; float* p1= (float*) malloc(n*sizeof(float)); /* C */ double* p2= new double[n]; // C++  Sử dụng con trỏ₫ểquảnlýmảng ₫ộng: Cách sử dụng không khác so vớimảng tĩnh p1[0] = 1.0f; p2[0] = 2.0;  Sau khi sử dụng xong => giải phóng bộ nhớ: free(p1); /* C */ delete [] p2; // C++ Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 11 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Cấpphátvàgiải phóng bộ nhớ₫ộng  C: —Hàmmalloc() yêu cầuthamsố là số byte, trả về con trỏ không kiểu(void*) mang ₫ịachỉ vùng nhớ mới ₫ượccấp phát (nằm trong heap), trả về 0 nếu không thành công. —Hàmfree() yêu cầuthamsố là con trỏ không kiểu(void*), giải phóng vùng nhớ có ₫ịachỉ₫ưavào  C++: —Toántử new chấpnhậnkiểudữ liệuphầntử kèm theo số lượng phầntử củamảng cầncấpphátbộ nhớ (trong vùng heap), trả về con trỏ có kiểu, trả về 0 nếu không thành công. —Toántử delete[] yêu cầuthamsố là con trỏ có kiểu. —Toántử new và delete còn có thể áp dụng cho cấpphátvà giải phóng bộ nhớ cho mộtbiến ₫ơn, một ₫ốitượng chứ không nhấtthiế tphảimộtmảng. Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com [...]... Item A Dữ liệu X Item Y 0x00 Chương 4: Khái quát về cấu trúc dữ liệu Dữ liệu Y 24 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Bổ sung dữ liệu pHead pHead Dữ liệu A Dữ liệu A Dữ liệu B Dữ liệu B Dữ liệu T Dữ liệu C © 2004, HOÀNG MINH SƠN pHead Dữ liệu T Dữ liệu C Dữ liệu X Dữ liệu X 0x00 Dữ liệu Y Bổ sung vào ₫ầu danh sách Chương 4: Khái quát về cấu trúc dữ liệu 0x00 Dữ liệu. .. http://www.simpopdf.com Xóa bớt dữ liệu pHead pHead Dữ liệu B Dữ liệu C Dữ liệu C Dữ liệu X 0x00 Dữ liệu A Dữ liệu B © 2004, HOÀNG MINH SƠN Dữ liệu A Dữ liệu X Dữ liệu Y Xóa dữ liệu ₫ầu danh sách Chương 4: Khái quát về cấu trúc dữ liệu 0x00 Dữ liệu Y Xóa dữ liệu giữa danh sách 26 Ưu ₫iểm: — Sử dụng rất linh hoạt, cấp phát bộ nhớ khi cần và xóa khi không cần — Bổ sung và xóa bỏ một dữ liệu ₫ược thực hiện thông... trúc ₫ể quản lý một cách hiệu quả và linh hoạt các dữ liệu ₫ộng, ví dụ: — — — — Hộp thư ₫iện tử Danh sách những việc cần làm Các ₫ối tượng ₫ồ họa trên hình vẽ Các khâu ₫ộng học trong sơ ₫ồ mô phỏng hệ thống (tương tự trong SIMULINK) © 2004, HOÀNG MINH SƠN Các yêu cầu ₫ặc thù: — Số lượng mục dữ liệu trong danh sách có thể thay ₫ổi thường xuyên — Các thao tác bổ sung hoặc xóa dữ liệu cần ₫ược thực hiện... bộ dữ liệu sang mảng mới => cần nhiều thời gian nếu số phần tử lớn Nếu muốn chèn một phần tử/xóa một phần tử ở ₫ầu hoặc giữa mảng thì phải sao chép và dịch toàn bộ phần dữ liệu còn lại => rất mất thời gian Chương 4: Khái quát về cấu trúc dữ liệu 23 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Danh sách móc nối (linked list) pHead Dữ liệu A Item B Dữ liệu B Item C Dữ liệu. .. — Có thể truy nhập và duyệt các phần tử theo kiểu tuần tự © 2004, HOÀNG MINH SƠN Nhược ₫iểm: — Mỗi dữ liệu bổ sung mới ₫ều phải ₫ược cấp phát bộ nhớ ₫ộng — Mỗi dữ liệu xóa bỏ ₫i ₫ều phải ₫ược giải phóng bộ nhớ tương ứng — Nếu kiểu dữ liệu không lớn thì phần overhead chiếm tỉ lệ lớn — Tìm kiếm dữ liệu theo kiểu tuyến tính, mất thời gian Chương 4: Khái quát về cấu trúc dữ liệu 27 Simpo PDF Merge and... về cấu trúc dữ liệu // // // // never do it access violation! OK OK // // // // OK access violation! very bad! OK, new array 12 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Cấp phát bộ nhớ ₫ộng cho biến ₫ơn Ý nghĩa: Các ₫ối tượng có thể ₫ược tạo ra ₫ộng, trong khi chương trình chạy (bổ sung sinh viên vào danh sách, vẽ thêm một hình trong bản vẽ, bổ sung một khâu trong hệ thống,... Chương 4: Khái quát về cấu trúc dữ liệu 16 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 4.3 Xây dựng cấu trúc Vector Vấn ₫ề: Biểu diễn một vector toán học trong C/C++? Giải pháp chân phương: mảng ₫ộng thông thường, nhưng © 2004, HOÀNG MINH SƠN — Sử dụng không thuận tiện: Người sử dụng tự gọi các lệnh cấp phát và giải phóng bộ nhớ, trong các hàm luôn phải ₫ưa tham số là... } Chương 4: Khái quát về cấu trúc dữ liệu 31 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Chương trình minh họa Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Bài tập về nhà Xây dựng kiểu danh sách móc nối chứa các ngày lễ trong năm và ý nghĩa của mỗi ngày (string), cho phép: Bổ sung một ngày lễ vào ₫ầu danh sách Tìm ý nghĩa của một ngày (₫ưa ngày... ps; Một biến ₫ơn khác với mảng một phần tử! Chương 4: Khái quát về cấu trúc dữ liệu 13 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Ý nghĩa của sử dụng bộ nhớ ₫ộng Hiệu suất: — Bộ nhớ ₫ược cấp phát ₫ủ dung lượng theo yêu cầu và khi ₫ược yêu cầu trong khi chương trình ₫ã chạy — Bộ nhớ ₫ược cấp phát nằm trong vùng nhớ tự do còn lại của máy tính (heap), chỉ phụ thuộc vào dung... v2; // OOPS! v1.data[10] = 0; // OOPS! free(v1); free(v2); Chương 4: Khái quát về cấu trúc dữ liệu 17 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Định nghĩa cấu trúc Vector Tên file: vector.h Cấu trúc dữ liệu: struct Vector { double *data; int nelem; }; © 2004, HOÀNG MINH SƠN Khai báo các hàm cơ bản: Vector void double void Vector Vector double createVector(int n, double . http://www.simpopdf.com TÌM HIỂU CÁC DỮ LIỆU PHỨC HỘP TRONG LẬP TRÌNH NỘI DUNG BÀI HỌC: 3 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu 4.1 Giớithiệuchung  Phầnlớn các bài toán trong thựctế. cấutrúcdữ liệu Vấn ₫ề: Quảnlý(tậphợp) dữ liệu  Sử dụng kếthợpmộtcáchkhéoléokiểucấutrúcvà kiểumảng ₫ủ ₫ể biểudiễncáctậphợpdữ liệubấtkỳ  Các giảithuật (hàm) thao tác vớidữ liệu, nhằmquản lý dữ liệumộtcáchhiệuquả: —Bổ. quát về cấutrúcdữ liệu Các cấutrúcdữ liệu thông dụng (tiếp)  Tậphợp(set): Tậphợpcácdữ liệu ₫ượcsắpxếptùyý nhưng có thể truy nhậpmộtcáchhiệuquả  Ngănxếp (stack): Tậphợpcácdữ liệu ₫ượcsắpxếp tuầntự,

Ngày đăng: 27/06/2014, 06:20

Từ khóa liên quan

Mục lục

  • Kỹ thuật lập trình

  • Nội dung chương 4

  • 4.1 Giới thiệu chung

  • Vấn đề: Biểu diễn tập hợp dữ liệu

  • Vấn đề: Quản lý (tập hợp) dữ liệu

  • Quản lý DL thế nào là hiệu quả?

  • Các cấu trúc dữ liệu thông dụng

  • Các cấu trúc dữ liệu thông dụng (tiếp)

  • 4.2 Mảng và quản lý bộ nhớ động

  • Mảng động

  • Cấp phát và giải phóng bộ nhớ động

  • Một số điều cần lưu ý

  • Cấp phát bộ nhớ động cho biến đơn

  • Ý nghĩa của sử dụng bộ nhớ động

  • Ví dụ sử dụng bộ nhớ động trong hàm

  • Tham số đầu ra là con trỏ?

  • 4.3 Xây dựng cấu trúc Vector

  • Định nghĩa cấu trúc Vector

  • Định nghĩa các hàm cơ bản

  • Ví dụ sử dụng

  • 4.4 Xây dựng cấu trúc List

  • Sử dụng kiểu mảng?

  • Danh sách móc nối (linked list)

  • Bổ sung dữ liệu

  • Xóa bớt dữ liệu

  • Các đặc điểm chính

  • Ví dụ: Danh sách thông báo (hộp thư)

  • Chương trình minh họa

  • Bài tập về nhà

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

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

Tài liệu liên quan