CÂU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - CHƯƠNG 4 DANH SÁCH TUYẾN TÍNH docx

29 3.2K 40
CÂU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - CHƯƠNG 4 DANH SÁCH TUYẾN TÍNH docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHƯƠNG DANH 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 tốn với danh sách  Lưu trữ 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 tập phần tử thuộc lớp đối tượng   Dãy số nguyên, danh sách sinh viên, Giả sử L danh sách có n phần tử L = { a1, a2, , an }  n gọi độ dài danh sách L  n>0 a1 phần tử đầu tiên, an phần tử cuối  Với L, ta nói đứng trước ai+1 đứng sau ai-1 (i=1 n)  Danh sách mà phần tử có thứ tự “trước-sau” gọi “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 phần tử vào danh sách (add)  Loại bỏ phần tử khỏi danh sách (remove)  Sắp xếp danh sách (sort)  Tìm kiếm danh sách (search)  LƯU TRỮ KẾ TIẾP CỦA DSTT  DSTT lưu trữ nhớ mảng chiều gọi lưu trữ  Mỗi phần tử mảng lưu trữ phần tử danh sách  Ưu điểm    Truy cập nhanh đồng phần tử Các thao tác thực đơn giản Nhược điểm  Do kích thước mảng cố định khai báo nên dẫn đến lãng phí thiếu nhớ BIỂU DIỄN CẤU TRÚC DỮ LIỆU  Giả sử phần tử danh sách có kiểu liệu “Item”  Độ dài danh sách số nguyên dương N  Danh sách biểu diễn cấu trúc gồm hai thành phần  Thành phần thứ nhất: biến “count” lưu số phần tử mảng, lưu trữ phần tử cuối danh sách  Thành phần thứ hai: mảng chiều “E” lưu phần tử danh sách L, E[i-1] lưu 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 } Mảng E a1 a2 … n-1 … … an … count = n-1 Max-1 LƯU TRỮ KẾ TIẾP CỦA DSTT  Cấu trúc liệu khai báo sau #define Max N struct Item { Các thành phần liệu; }; struct List { int count; Item E[Max]; }; List L; //Khai báo ds L L.count = -1 -> ds L rỗng L.count = Max-1 -> ds L đầy LƯU TRỮ KẾ TIẾP CỦA DSTT  Ví dụ #define Max struct struct List { Sinhvien { int count; char hoten[30]; char gioitinh[4]; int tuoi; }; Sinhvien E[Max]; }; List L; //Khai báo ds L LƯU TRỮ KẾ TIẾP CỦA DSTT  Ví dụ L.E E S1 S2 S3 S4 S5 L.count Danh sách L chứa sinh viên count = CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP  Thêm phần tử vào cuối danh sách  Điều kiện: Danh sách chưa đầy Max = Mảng E 14 23 11 25 37 29 count = count = Danh sách chưa đầy X 29 CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP  Thêm phần tử vào cuối danh sách int Add(List &L, Item X) { if (full(L)) return 0; else{ L.count++; L.E[L.count] = X; return 1; } } LƯU TRỮ KẾ TIẾP CỦA DSTT CHƯƠNG TRÌNH TẠO VÀ HiỂN THỊ DANH SÁCH SINH VIÊN CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP  Phép loại bỏ phần tử thứ k khỏi danh sách L Loại bỏ phần tử vị trí thứ k=3 for (i=k;i=k-1; i ) L.E[i+1] = L.E[i] ; L.E[k-1] = X; L.count ++; return 1; } else return 0; } CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP  Phép bổ sung phần tử vào danh sách L  Hàm Insert bổ sung X vào vị trí k ds L  Phép bổ sung thành công L khơng đầy k vị trí nằm ds L  Hàm trả giá trị bổ sung thành công, ngược lại trả CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP  Phép bổ sung phần tử vào cuối danh sách L Bổ sung X=24 vào cuối danh sách L Mảng E Max = 14 23 42 11 25 count = X = 24 Mảng E Max = 14 23 42 11 25 count = CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP  Phép bổ sung phần tử vào cuối danh sách L Bổ sung X=24 vào cuối danh sách L Mảng E Max = 14 23 42 11 25 24 count = CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP  Phép bổ sung phần tử vào cuối danh sách L Procedure Insert_End (X:Item; Var L:List; Var OK:Boolean); Var i : integer; Begin OK := FALSE; if ( L.count < Max) then begin L.count := L.count + 1; L.E[L.count] := X; OK := TRUE; end; END; CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP  Phép bổ sung phần tử vào cuối danh sách L  Thủ tục Insert_End bổ sung X vào cuối ds L  Phép  Biến bổ sung thành công L không đầy OK cho biết phép tốn có thành cơng hay không  OK = True -> Thành công  OK = False -> Không thành công BÀI TẬP   Cho L={A1, A2, A3, A4, A5} Yêu cầu:  Vẽ hình mơ tả trạng thái danh sách qua bước trình tạo danh sách từ danh sách rỗng  Vẽ hình mơ tả trạng thái danh sách thao tác loại bỏ phần tử (A1) phần tử thứ (A3) danh sách (cần thích rõ ràng)  Vẽ hình mơ tả q trình bổ sung phần tử A6 vào đầu danh sách, vào sau phần tử thứ (A3) danh sách  Giả sử danh sách lưu trữ thông tin sinh viên, sinh viên gồm: Mã sinh viên, họ tên, năm sinh, điểm tổng kết Hãy cài đặt chương trình thực yêu cầu sau: CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP          Khai báo cấu trúc liệu danh sách Nhập phần tử cho danh sách Hiển thị danh sách lên hình Xóa phần tử danh sách, hiển thị lại danh sách Xóa phần tử thứ danh sách, hiển thị lại danh sách Thêm phần tử vào đầu danh sách, hiển thị lại danh sách Thêm phần tử vào sau phần tử thứ danh sách, hiển thị danh sách Tìm sinh viên có tên “Doanh” danh sách, hiển thị kết tìm kiếm Sắp xếp danh sách theo chiều giảm dần điểm tổng kết, hiển thị lại DS ... danh sách tuyến tính  Các phép toán với danh sách  Lưu trữ 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. .. hiển thị lại danh sách Xóa phần tử thứ danh sách, hiển thị lại danh sách Thêm phần tử vào đầu danh sách, hiển thị lại danh sách Thêm phần tử vào sau phần tử thứ danh sách, hiển thị danh sách Tìm... tử vào danh sách  Thống kê danh sách  Tính tốn danh sách  Tìm kiếm 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 ;

Ngày đăng: 29/03/2014, 00:20

Từ khóa liên quan

Mục lục

  • CHƯƠNG 4

  • MỤC TIÊU

  • KHÁI NIỆM DSTT

  • CÁC PHÉP TOÁN TRÊN DSTT

  • LƯU TRỮ KẾ TIẾP CỦA DSTT

  • BIỂU DIỄN CẤU TRÚC DỮ LIỆU

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • CÁC PHÉP TOÁN TRÊN DS KẾ TIẾP

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan