1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng cấu trúc dữ liệu và giải thuật chương 3 GV nguyễn minh thành

36 294 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 452,8 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

So Sánh Dữ Liệu Tĩnh và Động Xét kiểu dữ liệu tĩnh  Bài tập : Hãy cài đặt hàm bằng ngôn ngữ C/C++ xóa phần tử có giá trị x nếu có trong mảng số nguyên a, kích thước n giả sử giá trị c

Trang 1

Giảng viên : Nguyễn Minh Thành Email : thanhnm.itc@itc.edu.vn

Chương 3 (1) : Con Trỏ & Cấu Trúc

Dữ Liệu Động

Trang 5

I So Sánh Dữ Liệu Tĩnh và Động

 Xét kiểu dữ liệu tĩnh

Bài tập : Hãy cài đặt hàm (bằng ngôn ngữ C/C++) chèn một

phần tử có giá trị x vào một mảng số nguyên a, kích thước n (có thứ tự tăng dần) sao cho mảng a vẫn có thứ tự tăng dần, theo mẫu hàm như sau:

void ChenX(int a[], int &n, int x);

Trang 8

I So Sánh Dữ Liệu Tĩnh và Động

 Xét kiểu dữ liệu tĩnh

Bài tập : Hãy cài đặt hàm (bằng ngôn ngữ C/C++) xóa phần

tử có giá trị x (nếu có) trong mảng số nguyên a, kích thước n (giả sử giá trị các phần tử trong mảng không trùng nhau), theo mẫu hàm như sau:

void XoaX(int a[], int &n, int x);

Trang 9

 Giải quyết vấn đề phức tạp khi chèn/ xóa?

 Giải quyết vấn đề giới hạn kích thước vùng nhớ tối đa?

 Giải quyết vấn đề vùng nhớ không liên tục?

 Giải quyết vấn đề giải phóng vùng nhớ khi không cần dùng

đến?

Trang 10

II Con Trỏ

 Bộ nhớ gồm 1 tập hợp các ô nhớ được đánh địa chỉ Bộ nhớ được chia làm 2 phần : stack và heap

 Stack : để cấp phát bộ nhớ cho các biến tĩnh & động

Trang 11

II Con Trỏ

 Khai báo dữ liệu tĩnh

 <kiểu dữ liệu> tên biến;

Vd: int a; float y;

 Tồn tại trong phạm vi khai báo

 Được cấp phát vùng nhớ trong vùng dữ liệu

 Kích thước cố định

Trang 12

II Con Trỏ

 Khai báo dữ liệu động (con trỏ)

<kiểu dữ liệu> *tên_biến_động;

Vd: int *a; float *y;

 Chứa địa chỉ của một đối tượng dữ liệu

 Được cấp phát hoặc giải phóng bộ nhớ tùy thuộc vào người lập trình

 Kích thước có thể thay đổi

Trang 13

II Con Trỏ

 Khai báo dữ liệu động (con trỏ)

Cấp phát bộ nhớ: new int [kích thước]

Giải phóng bộ nhớ: delete biến_động

Trang 14

II Con Trỏ

 Xét ví dụ sau :

int foo;int *x;

foo = 123;

x = &foo;

Trang 16

II Con Trỏ

 Lưu ý :

 Toán tử ‘*’ có hai chức năng :

 Khai báo con trỏ

 Truy xuất dữ liệu tại địa chỉ lưu dữ con trỏ

Trang 17

II Con Trỏ

 Toán tử ‘&’ : dùng để lấy địa chỉ của một biến

Trang 18

II Con Trỏ

 Một con trỏ phải có giá trị trước khi tham chiếu ngược để truy xuất

dữ liệu

Trang 20

II.1 Con Trỏ Với Dữ Liệu Cấu Trúc

Trang 21

II.2 Cấp Phát Bộ Nhớ Cho Con Trỏ

Trang 22

II.2 Cấp Phát Bộ Nhớ Cho Con Trỏ

Trang 23

II.2 Cấp Phát Bộ Nhớ Cho Con Trỏ

 Bài tập : trình bày thứ tự cấp phát và cho biết giá trị của các biến

Trang 24

III Tổng Quan về Danh Sách Liên Kết

 Danh sách liên kết là tập hợp các phần tử kết dính với nhau bằng một “sợi dây liên kết”

 Sự liên tiếp của các phần tử không phải liên tiếp về vị trí vật lý.

Trang 25

III Tổng Quan về Danh Sách Liên Kết

 Để đơn giản trong việc biểu diễn, danh sách liên kết được minh hoạ như sau

Trang 26

III Tổng Quan về Danh Sách Liên Kết

 Một dãy tuần tự các nút (Node)

 Giữa hai nút có con trỏ liên kết

 Các nút không cần phải lưu trữ liên tiếp nhau trong bộ nhớ

 Có thể mở rộng tuỳ ý (chỉ giới hạn bởi dung lượng bộ nhớ)

 Thao tác Chèn/Xóa không cần phải dịch chuyển phần tử

mà chỉ cần thay đổi mối liên kết

 Quản lý phần tử đầu tiên bằng con trỏ pHead

Trang 27

III Tổng Quan về Danh Sách Liên Kết

 Hình minh hoạ

Node

pHead pTail

List

Trang 28

III.1 Cấu Tạo Danh Sách Liên Kết

 Quản lý toàn bộ danh sách liên kết thông qua con trỏ đầu pHead

 pHead không phải là 1 nút, nó chỉ là “con trỏ chỉ đến nút” mà thôi

 Ta cũng có thể quản lý danh sách bằng cách sử dụng thêm con trỏ cuối (pTail)

 pTail không phải là 1 nút, nó chỉ là “con trỏ chỉ đến nút” mà thôi

Trang 29

III.1 Cấu Tạo Danh Sách Liên Kết

 Cấu tạo một Node

Trang 30

III.3 Một Số Thao Tác Trên DSLK

 Thêm một Node

 Kết nối lại sợi dây liên kết theo trình tự

List

Trang 31

III.3 Một Số Thao Tác Trên DSLK

 Xoá một Node

Cần xóa

pHead pTail

List

Trang 32

IV Các loại DSLK

 Danh sách liên kết đơn : Các phần tử kết nối với nhau theo một hướng “chiều đi tới”

Trang 33

IV Các loại DSLK

 Danh sách liên kết đôi : Các phần tử kết nối với nhau theo hai hướng “chiều đi tới và và đi lui”

Trang 34

IV Các loại DSLK

 Danh sách liên kết vòng : Các phần tử kết nối với nhau theo

hướng “chiều đi tới” và phần tử cuối cùng có “đường đi vòng trở lại tới” phần tử đầu danh sách

Trang 36

Hỏi Đáp

Ngày đăng: 03/12/2015, 06:41

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm