DANH SÁCH LIÊN KẾT - NGĂN XẾP VÀ HÀNG ĐỢI CHƯƠNG
lượt xem 42
download
Cấp phát ô nhớ dư, gây ra lãng phí ô nhớ. Cấp phát ô nhớ thiếu, chương trình thực thi bị lỗi. Để tránh những hạn chế trên, ngôn ngữ C++ cung cấp cho ta một loại biến đặc biệt gọi là biến động với các đặc điểm sau: Chỉ phát sinh trong quá trình thực hiện chương trình chứ không phát sinh lúc bắt đầu chương trình. Khi chạy chương trình, kích thước của biến, vùng nhớ và địa chỉ vùng nhớ được cấp phát cho biến có thể thay đổi. Sau khi sử dụng xong có thể giải phóng để tiết...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: DANH SÁCH LIÊN KẾT - NGĂN XẾP VÀ HÀNG ĐỢI CHƯƠNG
- CHƯƠNG I : TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ THUẬT GI ẢI CHƯƠNG II : MỘT SỐ THUẬT TOÁN TÌM KIẾM VÀ SẮP XẾP CHƯƠNG III : DANH SÁCH LIÊN KẾT - NGĂN XẾP VÀ HÀNG ĐỢI CHƯƠNG IV : CÂY
- I. KIỂU CON TRỎ 1. Giới Thiệu Kiểu Dữ Liệu Con Trỏ Địa chỉ ô nhớ Bộ nhớ N A M 4 25 int andy = 25 Nội dung ô nhớ char name[10] = “NAM” b=4
- I. KIỂU CON TRỎ 1. Giới Thiệu Kiểu Dữ Liệu Con Trỏ 2 5 7 9 4 8 9 int a[6] char ten[100]
- I. KIỂU CON TRỎ 1. Giới Thiệu Kiểu Dữ Liệu Con Trỏ 25 25 a b pa c a = 25 b=a pa = &a c = *pa Con trỏ là biến lưu địa chỉ của biến khác
- I. KIỂU CON TRỎ 1. Giới Thiệu Kiểu Dữ Liệu Con Trỏ 6442 25 andy ted andy = 25 andy = 25 andy *P &andy = 6442 ted = &andy 25 = 6442 ted = 8444 &ted = 25 *ted
- I. KIỂU CON TRỎ 1. Giới Thiệu Kiểu Dữ Liệu Con Trỏ Một số hạn chế có thể gặp phải khi sử dụng các biến tĩnh: Cấp phát ô nhớ dư, gây ra lãng phí ô nhớ. Cấp phát ô nhớ thiếu, chương trình thực thi bị lỗi. Để tránh những hạn chế trên, ngôn ngữ C++ cung cấp cho ta một loại biến đặc biệt gọi là biến động với các đặc điểm sau: Chỉ phát sinh trong quá trình thực hiện chương trình chứ không phát sinh lúc bắt đầu chương trình. Khi chạy chương trình, kích thước của biến, vùng nhớ và địa chỉ vùng nhớ được cấp phát cho biến có thể thay đổi. Sau khi sử dụng xong có thể giải phóng để tiết kiệm chỗ trong bộ nhớ. Tuy nhiên các biến động không có địa chỉ nhất định nên ta không thể truy cập đến chúng được. Vì thế, ngôn ngữ C++ lại cung cấp cho ta một loại biến đặc biệt nữa để khắc phục tình trạng này, đó là biến con trỏ (pointer) với các đặc điểm: Biến con trỏ không chứa dữ liệu mà chỉ chứa địa chỉ của dữ liệu hay chứa địa chỉ của ô nhớ chứa dữ liệu. Kích thước của biến con trỏ không phụ thuộc vào kiểu dữ liệu, luôn có kích thước cố định là 2 byte.
- I. KIỂU CON TRỎ 1. Giới Thiệu Kiểu Dữ Liệu Con Trỏ Toán tử lấy địa chỉ (&) Ví dụ : int a; int *p; p = &a; Toán tử tham chiếu (*) Ví dụ : int a, b; int *p; a = 2; p = &a; b = *p;
- I. KIỂU CON TRỎ 2. Khai báo biến Con Trỏ Cú pháp: * Ý nghĩa: Khai báo một biến có tên là con trỏ dùng để chứa địa chỉ của các biến có kiểu Ví dụ 1: Khai báo 2 biến a, b có kiểu int và 2 biến pa, pb là 2 biến con trỏ kiểu int int a, b, *pa, *pb; Ví dụ 2: Khai báo biến f kiểu float và biến pf là con trỏ float float f, *pf;
- I. KIỂU CON TRỎ 2. Khai báo biến Con Trỏ char *ted = “hello” h e l l o \0 ted [4] 5441 *(ted + 4) ted
- I. KIỂU CON TRỎ 2. Các thao tác trên Con Trỏ 2.1 Gán địa chỉ của biến cho biến con trỏ (Toán tử &) Ví dụ: int a; float b; int *pa; float *pb; pa = &a; pb = &b; Lưu ý: ví dụ sau đây không đúng do không tương thích kiểu: int a; float *pb; pb = &a;
- I. KIỂU CON TRỎ 2. Các thao tác trên Con Trỏ 2.2 Nội dung của ô nhớ con trỏ chỉ tới (Toán tử *) Ví dụ: int x = 100; int y; int *ptr; ptr = &x; y = *ptr; cout
- I. KIỂU CON TRỎ 2. Các thao tác trên Con Trỏ 2.3 Các phép tính số học với pointer Việc thực hiện các phép tính số học với con trỏ hơi khác so với các kiểu dữ liệu số nguyên khác, trước hết chỉ phép cộng và phép trừ được phép dùng. Nhưng kết quả cộng trừ phụ thuộc vào kích thức dữ liệu mà biến con trỏ trỏ tới char chiếm 1byte, int chiếm 2 byte, long chiếm 4 byte Ví dụ mychar++ char *mychar mychar : 1000 myint++ int *myint myint : 2000 mylong++ long *mylong mylong : 3000
- I. KIỂU CON TRỎ 2. Các thao tác trên Con Trỏ 2.3 Các phép tính số học với pointer #include void main() Value 1 = 10 Value 2 = 20 { int value1 = 5, value2 = 15; int *mypointer; mypointer = &value1; *mypointer = 10; mypointer = &value2; *mypointer = 20; cout
- I. KIỂU CON TRỎ 2. Các thao tác trên Con Trỏ 2.3 Các phép tính số học với pointer #include Value 1 = 10 Value 2 = 20 void main() { int value1 = 5, value2 = 15; int *p1, *p2; p1 = &value1; p2 = &value2; *p1 = 10; *p2 = *p1; p1 = p2; *p1 = 20; cout
- I. KIỂU CON TRỎ 2. Các thao tác trên Con Trỏ 2.3 Các phép tính số học với pointer #include void main() { int a[5]; int *p; int i; 6, 4, 9, 2, 7 p = a; *p = 6; p++; *p=4; p = &a[2]; *p = 9; p = a+3; *p = 2; p = a; *(p+4) = 7; for (i = 0; i < 5;i++) cout
- I. KIỂU CON TRỎ 3. Cấp phát vùng nhớ cho biến con trỏ Trước khi sử dụng biến con trỏ, ta nên cấp phát vùng nhớ cho biến con trỏ này quản lý địa chỉ. Việc cấp phát được thực hiện nhờ các hàm malloc( ), calloc( ) trong thư viện alloc.h. Cú pháp: void *malloc(size_t size) Cấp phát vùng nhớ có kích thước là size void *calloc(size nitems, size_t size) Cấp phát vùng nhớ có kích thước là nitems*size
- I. KIỂU CON TRỎ 3. Cấp phát vùng nhớ cho biến con trỏ Ví dụ: Giả sử ta có khai báo: int a, *pa, *pb; pa = (int*)malloc(sizeof(int)); /* Cấp phát vùng nhớ có kích thước bằng với kích thước của một số nguyên */ pb= (int*)calloc(10, sizeof(int)); /* Cấp phát vùng nhớ có thể chứa được 10 số nguyên*/ Lưu ý: Khi sử dụng hàm malloc() hay calloc(), ta phải ép kiểu vì nguyên mẫu các hàm này trả về con trỏ kiểu void.
- I. KIỂU CON TRỎ 3. Cấp phát vùng nhớ cho biến con trỏ = new delete < pointer > Ví dụ: Giả sử ta có khai báo struct node { int info; node *pNext; }; node *p; p = new node; delete p;
- II. DANH SÁCH LIÊN KẾT ĐƠN 1. Khái niệm Cấu trúc danh sách liên kết là cấu trúc động, việc cấp phát nút và giải phóng nút trên danh sách xảy ra khi chương trình đang chạy. Ta thường cấp phát nút cho danh sách liên kết bằng biến động. Các phần tử sẽ được cấp phát vùng nhớ trong quá trình thực thi chương trình, do đó chúng có thể nằm rải rác ở nhiều nơi khác nhau trong bộ nhớ (phân bố không liên tục).
- II. DANH SÁCH LIÊN KẾT ĐƠN 1. Khái niệm
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Danh sách liên kết đơn (List)
83 p | 613 | 155
-
Danh sách liên kết
21 p | 358 | 108
-
Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 6: Danh sách liên kết
149 p | 403 | 67
-
Bài giảng chương 3: Danh sách liên kết
19 p | 114 | 16
-
Tài liệu hướng dẫn thực hành môn Cấu trúc dữ liệu và giải thuật - Bài 2: Danh sách liên kết
5 p | 173 | 12
-
Bài giảng Danh sách liên kết
88 p | 129 | 10
-
bai-giang-ky-thuat-lap-trinh-danh-sach-lien-ket
20 p | 111 | 10
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Danh sách liên kết đơn (List)
78 p | 123 | 10
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Danh sách liên kết - TS. Ngô Hữu Dũng
50 p | 114 | 7
-
Bài giảng Danh sách liên kết - ĐH Tôn Đức Thắng
59 p | 60 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 7: Danh sách liên kết
25 p | 40 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Danh sách liên kết - TS. Đào Nam Anh
33 p | 90 | 5
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Danh sách liên kết - Nguyễn Mạnh Hiển (HKI năm 2020-2021)
35 p | 60 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 15: Danh sách liên kết
70 p | 56 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Danh sách liên kết - Phan Mạnh Hiển (2020)
33 p | 47 | 3
-
Bài giảng Cơ sở dữ liệu giải thuật: Bài 5 - Danh sách liên kết
28 p | 63 | 3
-
Bài giảng Kỹ thuật lập trình: Danh sách liên kết - Nguyễn Minh Huy
19 p | 9 | 3
-
Bài giảng Cấu trúc dữ liệu: Danh sách liên kết - TS. Lê Minh Trung & Th.S Lương Trần Ngọc Khiết
32 p | 24 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn