Danh mục

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    
tailieu_vip

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

Tài liệu được xem nhiều: