Bài giảng kỹ thuật lập trình bài 4 ths nguyễn thành trung

20 39 0
Bài giảng kỹ thuật lập trình  bài 4   ths  nguyễn thành trung

Đ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

Trịnh Thành Trung (ThS) trungtt@soict.hust.edu.vn Bài CẤU TRÚC DỮ LIỆU Các toán thực tế thường phức tạp 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 Cấu trúc liệu cách tổ chức thao tác có hệ thống liệu Mô tả  Các liệu cấu thành  Mối liên kết mặt cấu trúc liệu Cung cấp thao tác liệu Đặc trưng cho kiểu liệu Dữ liệu, kiểu liệu & cấu trúc liệu Machine Level Data Storage Primitive Data Types 0100110001101001010001 3.1415 28 array Basic Data Structures High-Level Data Structures 'A' stack queue hash table list tree Các kiểu liệu 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ụ ▫C/C++: int, long, char, bool ▫Thao tác số nguyên: + - * / 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 Nội dung Mảng Danh sách Ngăn xếp Hàng đợi Cây Mảng Array Mảng Array ▪ 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 không giới hạn số chiều mảng Cú pháp DataType ArrayName[size]; mảng nhiều chiều DataType ArrayName[size 1][size 2] [size n]; Khởi tạo giá trị mảng ▪ C1 Khi khai báo 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; Danh sách List Danh sách List ▪ Danh sách ▫ Tập hợp phần tử kiểu ▫ Số lượng phần tử danh sách không cố định ▪ Phân loại ▫ Danh sách tuyến tính: ▸ Có phần tử đầu tiên, phần tử cuối ▸ Thứ tự trước / sau phần tử xác định rõ ràng, ví dụ theo thứ tự tăng dần, giảm dần hay thứ tự bảng chữ ▸ Các thao tác danh sách phải không làm ảnh hưởng đến trật tự ▫ Danh sách phi tuyến tính: phần tử danh sách khơng thứ tự Danh sách List ▪ Lưu trữ ▫ Sử dụng vùng ô nhớ liên tiếp nhớ  danh sách ▫ Sử dụng vùng ô nhớ không liên tiếp nhớ  danh sách móc nối ▸ Danh sách nối đơn ▸ Danh sách nối kép Thao tác danh sách  Khởi tạo danh sách (create)  Kiểm tra danh sách rỗng (isEmpty)  Kiểm tra danh sách đầy (isFull)  Tính kích thước (sizeOf)  Xóa rỗng danh sách (clear)  Thêm phần tử vào danh sách ví trí cụ thể (insert)  Loại bỏ phần tử vị trí cụ thể khỏi danh sách (remove)  Lấy phần tử vị trí cụ thể (retrieve)  Thay giá trị phần tử vị trí cụ thể (replace)  Duyệt danh sách thực thao tác vị trí danh sách (traverse) Danh sách ▪ Sử dụng vector lưu trữ gồm số ô nhớ liên tiếp ▫ Các phần tử liền kề lưu trữ ô nhớ liền kề ▫ Mỗi phần tử danh sách gán số thứ tự lưu trữ vector ▫ Tham chiếu đến phần tử sử dụng địa tính giống lưu trữ mảng i last n-1 Danh sách ▪ Ưu điểm ▫ Tốc độ truy cập vào phần tử danh sách nhanh ▪ Nhược điểm ▫ Cần phải biết trước kích thước tối đa danh sách ? ▫ Thực phép toán bổ sung phần tử loại bỏ phần tử cũ tốn ? Thêm vào danh sách ▪ Điều kiện tiên quyết: ▫ Danh sách phải khởi tạo ▫ Danh sách chưa đầy ▫ Phần tử thêm vào chưa có danh sách ▪ Điều kiện hậu nghiệm: ▫ Phần tử cần thêm vào có danh sách insert(3, ‘z’) z a b c d e f g h count=9 count=8 Thêm vào danh sách Algorithm Insert Input: index vị trí cần thêm vào, element giá trị cần thêm vào Output: tình trạng danh sách if list đầy return overflow if index nằm khoảng [0 count] return range_error //Dời tất phần tử từ index sau vị trí for i = count-1 down to index entry[i+1] = entry[i] entry[index] = element // Gán element vào vị trí index count++ // Tăng số phần tử lên return success; End Insert Xóa khỏi danh sách remove(3, ‘d’) a b c d e f g h count=7 Xóa khỏi danh sách Algorithm Remove Input: index vị trí cần xóa bỏ, element giá trị lấy Output: danh sách xóa bỏ phần tử index if list rỗng return underflow if index nằm khoảng [0 count-1] return range_error element = entry[index] //Lấy element vị trí index count-//Giảm số phần tử //Dời tất phần tử từ index trước vị trí for i = index to count-1 entry[i] = entry[i+1] return success; End Remove Duyệt danh sách Algorithm Traverse Input: hàm visit dùng để tác động vào phần tử Output: danh sách cập nhật hàm visit //Quét qua tất phần tử list for index = to count-1 Thi hành hàm visit để duyệt phần tử entry[index] End Traverse ... 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 Nội dung Mảng Danh sách Ngăn xếp Hàng đợi Cây Mảng Array... "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; Danh sách List Danh sách List... 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ụ ▫C/C++: int, long, char, bool ▫Thao tác số nguyên: + - * / Kiểu

Ngày đăng: 19/06/2019, 10:04

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

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

Tài liệu liên quan