Bài giảng Lập trình C nâng cao - Chương 6: Cấu trúc tự trỏ
Số trang: 10
Loại file: pdf
Dung lượng: 76.64 KB
Lượt xem: 14
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chương 6 trang bị cho người học những hiểu biết về cấu trúc tự trỏ. Chương này trình bày một số nội dung chính sau: Cấu trúc tự trỏ, danh sách liên kết, ngăn xếp, hàng đợi. Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình C nâng cao - Chương 6: Cấu trúc tự trỏ Chương 6: CẤU TRÚC TỰ TRỎ1. Cấu trúc tự trỏ2. Danh sách liên kết a. Định nghĩa DSLK b. Khai báo DSLK c. Thao tác trên DSLK3. Ngăn xếp a. Định nghĩa ngăn xếp b. Khai báo ngăn xếp c. Thao tác trên ngăn xếp4. Hàng đợi a. Định nghĩa hàng đợi b. Khai báo hàng đợi c. Thao tác trên hàng đợi 1. Cấu trúc tự trỏa. Cấu trúc dữ liệu động và cấu trúc dữ liệu tĩnh – Mảng là một tập hợp các phần tử cùng kiểu dữ liệu. Số phần tử được xác định trước do vậy mảng được xem như là một cấu trúc dữ liệu tĩnh. – Việc xác định số phần tử trước khi sử dụng sẽ dẫn tới trường hợp thừa, thiếu bộ nhớ. – Một số thao tác như thêm, xóa bỏ một phần tử trong mảng sẽ dẫn tới nhiều phí tổn khi phải di dời một số lượng lớn các phần tử. – Để khắc phục những nhược điểm của mảng người ta đưa ra cấu trúc tự trỏ. Cấu trúc tự trỏ cho phép tạo mối liên kết giữa các phần tử và cấp phát và thu hồi vùng nhớ động. 1. Cấu trúc tự trỏb. Một số vấn đề liên quan đến cấu trúc tự trỏ – Các thao tác trên con trỏ: khai báo, truy cập tới địa chỉ &, truy cập tới nội dung *, con trỏ NULL – Các phép toán trên con trỏ: gán, cộng với số nguyên, so sánh giữa các con trỏ… – Kiểu dữ liệu dạng con trỏ: vô hướng (thực, nguyên, ký tự), có cấu trúc và cả con trỏ hàm – Việc cấp phát vùng nhớ: *malloc(size), calloc(n, size) – Thu hồi vùng nhớ: free(void *buff) 2. Danh sách liên kếta. Định nghĩa DSLK đơn: – DSLK là một dãy các phần tử có thứ tự. Mỗi phần tử là một nút chứa hai thành phần • Data: Chứa thông tin của nút đó • Next: Là con trỏ chỉ đến nút kế tiếp có cấu trúc tương tự hoặc NULLb. Khai báo DSLK – typedef struct node { kdl data; struct node *Next; }; – Với cấu trúc tự trỏ này ta có thể kéo dài danh sách miễn là bộ nhớ cho phép. – Để quản lý cấu trúc người ta chỉ lưu trữ phần tử đầu do vậy việc truy cập tới từng phần tử trong cấu trúc là rất khó. Cũng có một số giải pháp để giải quyết những hạn chế này. – Từ cấu trúc tự trỏ ta có thể tạo lên các dạng cấu trúc khác như ngăn xếp, hàng đợi, cây nhị phân. 2. Danh sách liên kếtc. Thao tác chính trên DSLK– Tạo một node– Tạo một danh sách rỗng– Kiểm tra danh sách có rỗng hay không– Xóa/thêm một phần tử • Xóa/thêm đầu danh sách • Xóa/thêm cuối danh sách • Xóa/thêm sau phần tử thứ k trong danh sách– Duyệt qua danh sách Ngăn xếpa. Định nghĩa ngăn xếp – Ngăn xếp là 1 kiểu danh sách đặc biệt với các thao tác chèn, xóa chỉ thực hiện ở một đầu (đỉnh). Như vậy, ngăn xếp là cấu trúc “vào sau ra trước” – LIFO: Last In First Out – Ngăn xếp được ứng dụng nhiều trong tin học (undo, back…)b. Khai báo ngăn xếp – Việc khai báo ngăn xếp được thực hiện giống khai báo một danh sách liên kết Ngăn xếpc. Thao tác trên ngăn xếp – Tạo một node – Tạo một ngăn xếp rỗng – Kiểm tra ngăn xếp có rỗng hay không – Thêm một phần tử vào đầu ngăn xếp – Lấy một phần tử ở đầu ngăn xếp – Duyệt qua ngăn xếp 4. Hàng đợia. Định nghĩa hàng đợi – Hàng đợi là dạng đặc biệt của danh sách liên kết có nguyên tắc thêm vào ở đầu này và lấy ra ở đầu kia: “Vào trước – ra trước) FIFO: First In - First Out. – Hàng đợi được ứng rộng rãi trong tin học như in hoặc một số ứng dụng khác 4. Hàng đợib. Khai báo hàng đợi – Khai báo nút typedef struct Node { Kdl Data; struct Node *Next; }; typedef struct Node *PointerType; Hàng đợi bao gồm đầu – cuối typedef struct Queue { PointerType FrontPtr; PointerType RearPtr; }; 4. Hàng đợic. Thao tác trên hàng đợi – Khởi tạo hàng đợi rỗng – Kiểm tra hàng đợi có rỗng hay không – Lấy ra một phần tử ở đầu hàng đợi – Thêm một phần tử vào cuối hàng đợi – Duyệt qua hàng đợi ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình C nâng cao - Chương 6: Cấu trúc tự trỏ Chương 6: CẤU TRÚC TỰ TRỎ1. Cấu trúc tự trỏ2. Danh sách liên kết a. Định nghĩa DSLK b. Khai báo DSLK c. Thao tác trên DSLK3. Ngăn xếp a. Định nghĩa ngăn xếp b. Khai báo ngăn xếp c. Thao tác trên ngăn xếp4. Hàng đợi a. Định nghĩa hàng đợi b. Khai báo hàng đợi c. Thao tác trên hàng đợi 1. Cấu trúc tự trỏa. Cấu trúc dữ liệu động và cấu trúc dữ liệu tĩnh – Mảng là một tập hợp các phần tử cùng kiểu dữ liệu. Số phần tử được xác định trước do vậy mảng được xem như là một cấu trúc dữ liệu tĩnh. – Việc xác định số phần tử trước khi sử dụng sẽ dẫn tới trường hợp thừa, thiếu bộ nhớ. – Một số thao tác như thêm, xóa bỏ một phần tử trong mảng sẽ dẫn tới nhiều phí tổn khi phải di dời một số lượng lớn các phần tử. – Để khắc phục những nhược điểm của mảng người ta đưa ra cấu trúc tự trỏ. Cấu trúc tự trỏ cho phép tạo mối liên kết giữa các phần tử và cấp phát và thu hồi vùng nhớ động. 1. Cấu trúc tự trỏb. Một số vấn đề liên quan đến cấu trúc tự trỏ – Các thao tác trên con trỏ: khai báo, truy cập tới địa chỉ &, truy cập tới nội dung *, con trỏ NULL – Các phép toán trên con trỏ: gán, cộng với số nguyên, so sánh giữa các con trỏ… – Kiểu dữ liệu dạng con trỏ: vô hướng (thực, nguyên, ký tự), có cấu trúc và cả con trỏ hàm – Việc cấp phát vùng nhớ: *malloc(size), calloc(n, size) – Thu hồi vùng nhớ: free(void *buff) 2. Danh sách liên kếta. Định nghĩa DSLK đơn: – DSLK là một dãy các phần tử có thứ tự. Mỗi phần tử là một nút chứa hai thành phần • Data: Chứa thông tin của nút đó • Next: Là con trỏ chỉ đến nút kế tiếp có cấu trúc tương tự hoặc NULLb. Khai báo DSLK – typedef struct node { kdl data; struct node *Next; }; – Với cấu trúc tự trỏ này ta có thể kéo dài danh sách miễn là bộ nhớ cho phép. – Để quản lý cấu trúc người ta chỉ lưu trữ phần tử đầu do vậy việc truy cập tới từng phần tử trong cấu trúc là rất khó. Cũng có một số giải pháp để giải quyết những hạn chế này. – Từ cấu trúc tự trỏ ta có thể tạo lên các dạng cấu trúc khác như ngăn xếp, hàng đợi, cây nhị phân. 2. Danh sách liên kếtc. Thao tác chính trên DSLK– Tạo một node– Tạo một danh sách rỗng– Kiểm tra danh sách có rỗng hay không– Xóa/thêm một phần tử • Xóa/thêm đầu danh sách • Xóa/thêm cuối danh sách • Xóa/thêm sau phần tử thứ k trong danh sách– Duyệt qua danh sách Ngăn xếpa. Định nghĩa ngăn xếp – Ngăn xếp là 1 kiểu danh sách đặc biệt với các thao tác chèn, xóa chỉ thực hiện ở một đầu (đỉnh). Như vậy, ngăn xếp là cấu trúc “vào sau ra trước” – LIFO: Last In First Out – Ngăn xếp được ứng dụng nhiều trong tin học (undo, back…)b. Khai báo ngăn xếp – Việc khai báo ngăn xếp được thực hiện giống khai báo một danh sách liên kết Ngăn xếpc. Thao tác trên ngăn xếp – Tạo một node – Tạo một ngăn xếp rỗng – Kiểm tra ngăn xếp có rỗng hay không – Thêm một phần tử vào đầu ngăn xếp – Lấy một phần tử ở đầu ngăn xếp – Duyệt qua ngăn xếp 4. Hàng đợia. Định nghĩa hàng đợi – Hàng đợi là dạng đặc biệt của danh sách liên kết có nguyên tắc thêm vào ở đầu này và lấy ra ở đầu kia: “Vào trước – ra trước) FIFO: First In - First Out. – Hàng đợi được ứng rộng rãi trong tin học như in hoặc một số ứng dụng khác 4. Hàng đợib. Khai báo hàng đợi – Khai báo nút typedef struct Node { Kdl Data; struct Node *Next; }; typedef struct Node *PointerType; Hàng đợi bao gồm đầu – cuối typedef struct Queue { PointerType FrontPtr; PointerType RearPtr; }; 4. Hàng đợic. Thao tác trên hàng đợi – Khởi tạo hàng đợi rỗng – Kiểm tra hàng đợi có rỗng hay không – Lấy ra một phần tử ở đầu hàng đợi – Thêm một phần tử vào cuối hàng đợi – Duyệt qua hàng đợi ...
Tìm kiếm theo từ khóa liên quan:
Lập trình C Lập trình C nâng cao Bài giảng Lập trình C Ngôn ngữ lập trình Ngôn ngữ lập trình C Cấu trúc tự trỏGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 258 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 247 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 247 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 229 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 210 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 200 1 0 -
101 trang 198 1 0
-
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 188 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 163 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 160 0 0