TAILIEUCHUNG - Bài giảng Kỹ thuật lập trình: Bài 7 - TS. Đào Trung Kiên

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,. | Bài 7: Cấu trúc dữ liệu (Data structures) 1 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Mở đầu: mảng động Mảng trong C có số phần tử cố định từ khi khai báo Mả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; 10 20 30 40 50 free(arr); 25 arr = arr1; Tương tự khi xoá phần tử 2 10 EE3490: Kỹ thuật lập trình – HK1 2017/2018 20 25 30 40 50 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Khái niệm Ví dụ trên cho thấy mảng động khá kém hiệu quả trong việ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ơn Các cấu trúc dữ liệu phổ biến, ứng dụng tuỳ bài toán: 3 Ngă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/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Danh 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 theo Con trỏ next của phần tử cuối cùng trỏ đến NULL list data next data next data next 4 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội Khai báo DSLK Ví 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: 5 EE3490: Kỹ thuật lập trình – HK1 2017/2018 TS. Đào Trung Kiên – ĐH Bách khoa Hà .

TỪ KHÓA LIÊN QUAN
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.