CÂU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - CHƯƠNG 4 DANH SÁCH TUYẾN TÍNH
Số trang: 29
Loại file: ppt
Dung lượng: 518.50 KB
Lượt xem: 20
Lượt tải: 0
Xem trước 0 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Danh sách là một tập các phần tử thuộc cùng một lớp đối tượng nào đóDãy số nguyên, danh sách sinh viên,...Giả sử L là một danh sách có n phần tửL = { a1, a2, ..., an }n gọi là độ dài của danh sách Ln0 thì a1 là phần tử đầu tiên, an là phần tử cuối cùngVới L, ta nói ai đứng trước ai+1 và đứng sau ai-1 (i=1...n).Danh sách mà các phần tử có thứ tự “trước-sau” gọi là “DSTT”...
Nội dung trích xuất từ tài liệu:
CÂU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - CHƯƠNG 4 DANH SÁCH TUYẾN TÍNH CHƯƠNG 4DANH SÁCH TUYẾN TÍNH MỤC TIÊU Khái niệm danh sách tuyến tính Các phép toán với danh sách Lưu trữ kế tiếp của danh sách tuyến tính Danh sách móc nối đơn Danh sách nối đôi Danh sách móc nối vòng Ngăn xếp Hàng đợi KHÁI NIỆM DSTT Danh sách là một tập các phần tử thuộc cùng một lớp đối tượng nào đó Dãy số nguyên, danh sách sinh viên,... Giả sử L là một danh sách có n phần tử L = { a1, a2, ..., an } n gọi là độ dài của danh sách L n>0 thì a1 là phần tử đầu tiên, an là phần tử cuối cùng Với L, ta nói ai đứng trước ai+1 và đứng sau ai-1 (i=1...n). Danh sách mà các phần tử có thứ tự “trước-sau” gọi là “DSTT” CÁC PHÉP TOÁN TRÊN DSTT Khởi tạo danh sách rỗng (creat) Kiểm tra danh sách rỗng (empty) Kiểm tra danh sách đầy (full) Bổ sung một phần tử vào danh sách (add) Loại bỏ một phần tử khỏi danh sách (remove) Sắp xếp danh sách (sort) Tìm kiếm trên danh sách (search) ... LƯU TRỮ KẾ TIẾP CỦA DSTT DSTT được lưu trữ trong bộ nhớ bởi một mảng một chiều gọi là lưu trữ kế tiếp. Mỗi phần tử của mảng lưu trữ một phần tử của danh sách Ưu điểm Truy cập nhanh và đồng đều đối với mọi phần tử Các thao tác được thực hiện khá đơn giản Nhược điểm Do kích thước mảng cố định khi khai báo nên có thể dẫn đến sự lãng phí hoặc thiếu bộ nhớ.BIỂU DIỄN CẤU TRÚC DỮ LIỆU Giả sử các phần tử của danh sách có kiểu dữ liệu là “Item” Độ dài của danh sách là một số nguyên dương N Danh sách được biểu diễn bởi một cấu trúc gồm hai thành phần Thành phần thứ nhất: biến “count” lưu chỉ số phần tử mảng, lưu trữ phần tử cuối cùng của danh sách. Thành phần thứ hai: mảng một chiều “E” lưu các phần tử của danh sách L, E[i-1] lưu ai LƯU TRỮ KẾ TIẾP CỦA DSTT Biểu diễn danh sách Danh sách cần lưu trữ: L = { a1, a2, ..., an } 0 1 … n-1 … Max-1 a1 a2 an … … Mảng E count = n-1 LƯU TRỮ KẾ TIẾP CỦA DSTT Cấu trúc dữ liệu được khai báo như sau #define Max N L.count = -1 -> ds L rỗng L.count = Max-1 -> ds L đầy struct Item { Các thành phần dữ liệu; }; struct List { int count; Item E[Max]; }; List L; //Khai báo ds L LƯU TRỮ KẾ TIẾP CỦA DSTT Ví dụ #define Max 7 struct List { struct Sinhvien { int count; char hoten[30]; Sinhvien E[Max]; char gioitinh[4]; }; int tuoi; List L; //Khai báo ds L }; LƯU TRỮ KẾ TIẾP CỦA DSTT Ví dụ 0 1 2 3 4 5 6 L.E S1 S2 S3 S4 S5 E L.count count = 4 Danh sách L chứa 5 sinh viênCÁC PHÉP TOÁN TRÊN DS KẾ TIẾP Khởi tạo danh sách rỗng Kiểm tra danh sách rỗng Kiểm tra danh sách đầy Phép loại bỏ một phần tử khỏi danh sách Bổ sung một phần tử vào danh sách Thống kê danh sách Tính toán trên danh sách Tìm kiếm trên danh sách Sắp xếp danh sách CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP Khởi tạo danh sách rỗng void creat(List &L) { L.count = -1; } Max = 7 0 1 2 3 4 5 6 Mảng E count = -1 Danh sách rỗngCÁC PHÉP TOÁN TRÊN DS KẾ TIẾP Kiểm tra danh sách rỗng int empty(List L) { return (L.count == -1); } Hàm empty trả về giá trị 1 nếu danh sách rỗng, ngược lại trả về 0CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP Kiểm tra danh sách đầy int full(List L) { return (L.count == Max-1); } Max = 7 0 1 2 3 4 5 6 14 23 11 25 37 19 29 Mảng E count = 6 Danh sách đầy CÁC PHÉP TOÁN TRÊN DS KẾ T ...
Nội dung trích xuất từ tài liệu:
CÂU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - CHƯƠNG 4 DANH SÁCH TUYẾN TÍNH CHƯƠNG 4DANH SÁCH TUYẾN TÍNH MỤC TIÊU Khái niệm danh sách tuyến tính Các phép toán với danh sách Lưu trữ kế tiếp của danh sách tuyến tính Danh sách móc nối đơn Danh sách nối đôi Danh sách móc nối vòng Ngăn xếp Hàng đợi KHÁI NIỆM DSTT Danh sách là một tập các phần tử thuộc cùng một lớp đối tượng nào đó Dãy số nguyên, danh sách sinh viên,... Giả sử L là một danh sách có n phần tử L = { a1, a2, ..., an } n gọi là độ dài của danh sách L n>0 thì a1 là phần tử đầu tiên, an là phần tử cuối cùng Với L, ta nói ai đứng trước ai+1 và đứng sau ai-1 (i=1...n). Danh sách mà các phần tử có thứ tự “trước-sau” gọi là “DSTT” CÁC PHÉP TOÁN TRÊN DSTT Khởi tạo danh sách rỗng (creat) Kiểm tra danh sách rỗng (empty) Kiểm tra danh sách đầy (full) Bổ sung một phần tử vào danh sách (add) Loại bỏ một phần tử khỏi danh sách (remove) Sắp xếp danh sách (sort) Tìm kiếm trên danh sách (search) ... LƯU TRỮ KẾ TIẾP CỦA DSTT DSTT được lưu trữ trong bộ nhớ bởi một mảng một chiều gọi là lưu trữ kế tiếp. Mỗi phần tử của mảng lưu trữ một phần tử của danh sách Ưu điểm Truy cập nhanh và đồng đều đối với mọi phần tử Các thao tác được thực hiện khá đơn giản Nhược điểm Do kích thước mảng cố định khi khai báo nên có thể dẫn đến sự lãng phí hoặc thiếu bộ nhớ.BIỂU DIỄN CẤU TRÚC DỮ LIỆU Giả sử các phần tử của danh sách có kiểu dữ liệu là “Item” Độ dài của danh sách là một số nguyên dương N Danh sách được biểu diễn bởi một cấu trúc gồm hai thành phần Thành phần thứ nhất: biến “count” lưu chỉ số phần tử mảng, lưu trữ phần tử cuối cùng của danh sách. Thành phần thứ hai: mảng một chiều “E” lưu các phần tử của danh sách L, E[i-1] lưu ai LƯU TRỮ KẾ TIẾP CỦA DSTT Biểu diễn danh sách Danh sách cần lưu trữ: L = { a1, a2, ..., an } 0 1 … n-1 … Max-1 a1 a2 an … … Mảng E count = n-1 LƯU TRỮ KẾ TIẾP CỦA DSTT Cấu trúc dữ liệu được khai báo như sau #define Max N L.count = -1 -> ds L rỗng L.count = Max-1 -> ds L đầy struct Item { Các thành phần dữ liệu; }; struct List { int count; Item E[Max]; }; List L; //Khai báo ds L LƯU TRỮ KẾ TIẾP CỦA DSTT Ví dụ #define Max 7 struct List { struct Sinhvien { int count; char hoten[30]; Sinhvien E[Max]; char gioitinh[4]; }; int tuoi; List L; //Khai báo ds L }; LƯU TRỮ KẾ TIẾP CỦA DSTT Ví dụ 0 1 2 3 4 5 6 L.E S1 S2 S3 S4 S5 E L.count count = 4 Danh sách L chứa 5 sinh viênCÁC PHÉP TOÁN TRÊN DS KẾ TIẾP Khởi tạo danh sách rỗng Kiểm tra danh sách rỗng Kiểm tra danh sách đầy Phép loại bỏ một phần tử khỏi danh sách Bổ sung một phần tử vào danh sách Thống kê danh sách Tính toán trên danh sách Tìm kiếm trên danh sách Sắp xếp danh sách CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP Khởi tạo danh sách rỗng void creat(List &L) { L.count = -1; } Max = 7 0 1 2 3 4 5 6 Mảng E count = -1 Danh sách rỗngCÁC PHÉP TOÁN TRÊN DS KẾ TIẾP Kiểm tra danh sách rỗng int empty(List L) { return (L.count == -1); } Hàm empty trả về giá trị 1 nếu danh sách rỗng, ngược lại trả về 0CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP Kiểm tra danh sách đầy int full(List L) { return (L.count == Max-1); } Max = 7 0 1 2 3 4 5 6 14 23 11 25 37 19 29 Mảng E count = 6 Danh sách đầy CÁC PHÉP TOÁN TRÊN DS KẾ T ...
Tìm kiếm theo từ khóa liên quan:
cấu trúc dữ liệu giải thuật danh sách đệ quy giải thuật đệ quy dữ liệu máy tính quản lý dữ liệuTà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 320 0 0 -
Đáp án đề thi học kỳ 2 môn cơ sở dữ liệu
3 trang 316 1 0 -
PHÂN TÍCH THIẾT KẾ HỆ THỐNG XÂY DỰNG HỆ THỐNG ĐẶT VÉ TÀU ONLINE
43 trang 282 2 0 -
8 trang 271 0 0
-
Giải thuật và cấu trúc dữ liệu
305 trang 164 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 152 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 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 139 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 125 0 0 -
Giáo trình: Hệ quản trị cơ sở dữ liệu - Nguyễn Trần Quốc Vinh
217 trang 78 0 0