Bài giảng Kỹ thuật lập trình: Bài 4 - ThS. Nguyễn Thành Trung

20 8 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

 Thay thế giá trị của một phần tử tại một vị trí cụ thể (replace)  Duyệt danh sách và thực hiện một thao tác tại các vị trí trong danh sách (traverse).. Danh sách[r]

(1)

Bài 4

(2)

Các toán thực tế thường

phức tạp

Phải xác định được

o Các dữ liệu liên quan

đến toán

o Các thao tác cần thiết

(3)

dữ liệuMối liên kết mặt cấu trúc liệu đó

Cung cấp thao tác trên liệu đó

Đặc trưng cho kiểu liệu

(4)

Dữ liệu, kiểu liệu &

cấu trúc liệu

Machine Level Data Storage

Primitive Data Types Basic Data Structures

High-Level Data Structures

0100110001101001010001

28 3.1415 'A'

stack queue list

array

(5)

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

(6)

Nội dung

1. Mảng

(7)

1.

Mảng

(8)

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

(9)

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];

(10)

2.

Danh sách

(11)

List

▪ Danh sách

Tập hợp phần tử kiểu

Số lượng phần tử của 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ụ

sắp 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ự

(12)

Danh sách

List

▪ Lưu trữ

Sử dụng vùng ô nhớ liên tiếp trong bộ nhớdanh sách kế tiếp

Sử dụng vùng ô nhớ không liên tiếp trong bộ nhớdanh

sách móc nối

(13)

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)

(14)

Danh sách

kế tiếp

▪ 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ề nhau

Mỗi phần tử danh sách gán số thứ tự được lưu trữ vector

Tham chiếu đến phần tử sử dụng địa tính giống như lưu trữ mảng.

(15)

kế tiếp

▪ Ư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

(16)

Thêm vào

danh sách kế tiếp

▪ Điều kiện tiên quyết:

Danh sách phải khởi tạo rồi

Danh sách chưa đầy

Phần tử thêm vào chưa có trong danh sách ▪ Điều kiện hậu nghiệm:

Phần tử cần thêm vào có trong danh sách

insert(3, ‘z’)

d

a b c

0 1 2 3 4 5 6 7 8 9

e f g h

d e f g h

z

(17)

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 về sau vị trí

for i = count-1 down toindex entry[i+1] = entry[i]

entry[index] = element // Gán element vào vị trí index

count++ // Tăng số phần tử lên1

return success; End Insert

(18)

remove(3, ‘d’)

d

a b c

0 1 2 3 4 5 6 7 8 9

e f g h

d e f g h

count=7

h

Xóa khỏi

(19)

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

returnunderflow

if index nằm khoảng [0 count-1] return range_error

element = entry[index] //Lấy element vị trí index ra

count //Giảm số phần tử 1

//Dời tất phần tử từ index trước vị trí

fori = index to count-1 entry[i] = entry[i+1] returnsuccess;

End Remove

(20)

Duyệt

danh sách kế tiếp

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

Ngày đăng: 09/03/2021, 04:03

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

Tài liệu liên quan