Bài giảng Kỹ thuật lập trình: Bài 7 - TS. Đào Trung Kiên
Số trang: 21
Loại file: pdf
Dung lượng: 700.51 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Kỹ thuật lập trình: Bài 7 do TS. Đào Trung Kiên biên soạn trình bày các nội dung sau: Khái niệm cấu trúc dữ liệu, danh sách liên kết, khai báo danh sách liên kết, thao tác với danh sách liên kết, khởi tạo danh sách liên kết,...
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình: Bài 7 - TS. Đào Trung KiênBài 7: Cấu trúc dữ liệu(Data structures)1EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiMở đầu: mảng độngMảng trong C có số phần tử cố định từ khi khai báoMảng động là mảng có số phần tử thay đổi: bản chất làmột con trỏ và một biến cho biết số phần tửint n = 5;int* arr = (int*)malloc(n*sizeof(int));Bài toán chèn phần tử vào mảng động:pos = 2; val = 25;arr1 = (int*)malloc((n+1)*sizeof(int));memcpy(arr1, arr, pos*sizeof(int));memcpy(arr1+pos+1, arr+pos, (n-pos)*sizeof(int));arr1[pos] = val;1020304050free(arr);25arr = arr1;Tương tự khi xoá phần tử210EE3490: Kỹ thuật lập trình – HK1 2017/20182025304050TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiKhái niệmVí dụ trên cho thấy mảng động khá kém hiệu quả trongviệc thêm/bớt phần tử vì cần di chuyển các vùng nhớ,nhất là khi mảng có nhiều phần tử cần các cấu trúc dữliệu linh hoạt hơnCác cấu trúc dữ liệu phổ biến, ứng dụng tuỳ bài toán:3Ngăn xếp (stack)Hàng đợi (queue)Danh sách liên kết (linked list)Mảng động (vector, dynamic array)Ánh xạ (map), từ điển (dictionary), bảng băm (hash table)Tập hợp (set)Cây (tree)Đồ thị (graph)EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiDanh sách liên kết (DSLK)Là tập hợp các phần tử được móc nối với nhau bằng con trỏ:Một con trỏ trỏ đến phần tử đầu tiên (hoặc NULL nếu chưa có phần tử nào)Mỗi phần tử bao gồm 2 thành phần: dữ liệu, con trỏ next tới phần tử tiếp theoCon trỏ next của phần tử cuối cùng trỏ đến NULLlistdatanextdatanextdatanext4EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiKhai báo DSLKVí dụ với dữ liệu là kiểu int:struct SELEM;typedef struct SELEM ELEM, *PELEM, *LLIST;struct SELEM {int data;PELEM next;};Thư viện DSLK:5llist.hllist.cEE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình: Bài 7 - TS. Đào Trung KiênBài 7: Cấu trúc dữ liệu(Data structures)1EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiMở đầu: mảng độngMảng trong C có số phần tử cố định từ khi khai báoMảng động là mảng có số phần tử thay đổi: bản chất làmột con trỏ và một biến cho biết số phần tửint n = 5;int* arr = (int*)malloc(n*sizeof(int));Bài toán chèn phần tử vào mảng động:pos = 2; val = 25;arr1 = (int*)malloc((n+1)*sizeof(int));memcpy(arr1, arr, pos*sizeof(int));memcpy(arr1+pos+1, arr+pos, (n-pos)*sizeof(int));arr1[pos] = val;1020304050free(arr);25arr = arr1;Tương tự khi xoá phần tử210EE3490: Kỹ thuật lập trình – HK1 2017/20182025304050TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiKhái niệmVí dụ trên cho thấy mảng động khá kém hiệu quả trongviệc thêm/bớt phần tử vì cần di chuyển các vùng nhớ,nhất là khi mảng có nhiều phần tử cần các cấu trúc dữliệu linh hoạt hơnCác cấu trúc dữ liệu phổ biến, ứng dụng tuỳ bài toán:3Ngăn xếp (stack)Hàng đợi (queue)Danh sách liên kết (linked list)Mảng động (vector, dynamic array)Ánh xạ (map), từ điển (dictionary), bảng băm (hash table)Tập hợp (set)Cây (tree)Đồ thị (graph)EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiDanh sách liên kết (DSLK)Là tập hợp các phần tử được móc nối với nhau bằng con trỏ:Một con trỏ trỏ đến phần tử đầu tiên (hoặc NULL nếu chưa có phần tử nào)Mỗi phần tử bao gồm 2 thành phần: dữ liệu, con trỏ next tới phần tử tiếp theoCon trỏ next của phần tử cuối cùng trỏ đến NULLlistdatanextdatanextdatanext4EE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà NộiKhai báo DSLKVí dụ với dữ liệu là kiểu int:struct SELEM;typedef struct SELEM ELEM, *PELEM, *LLIST;struct SELEM {int data;PELEM next;};Thư viện DSLK:5llist.hllist.cEE3490: Kỹ thuật lập trình – HK1 2017/2018TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Tìm kiếm theo từ khóa liên quan:
Bài giảng Kỹ thuật lập trình Kỹ thuật lập trình Cấu trúc dữ liệu Khai báo danh sách liên kết Danh sách liên kếtGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 305 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 250 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 190 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 181 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 149 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 149 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 149 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 144 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 139 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 137 0 0