Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 96 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
96
Dung lượng
915,4 KB
Nội dung
ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG CAO ĐẲNG KINH TẾ KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH GIÁO TRÌNH MƠN HỌC: CẤU TRÚC DỮ LIỆU NGÀNH: HỆ THỐNG THÔNG TIN, THIẾT KẾ TRANG WEB, CÔNG NGHỆ THƠNG TIN (ỨNG DỤNG PHẦN MỀM) TRÌNH ĐỘ: CAO ĐẲNG Thành phố Hồ Chí Minh, năm 2020 ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG CAO ĐẲNG KINH TẾ KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH GIÁO TRÌNH MƠN HỌC: CẤU TRÚC DỮ LIỆU NGÀNH: HỆ THỐNG THÔNG TIN, THIẾT KẾ TRANG WEB, CÔNG NGHỆ THÔNG TIN (ỨNG DỤNG PHẦN MỀM) TRÌNH ĐỘ: CAO ĐẲNG THƠNG TIN CHỦ NHIỆM ĐỀ TÀI Họ tên: Võ Đào Thị Hồng Tuyết Học vị: Thạc Sỹ Đơn vị: Khoa Công Nghệ Thơng Tin Email: vodaothihongtuyet@hotec.edu.vn TRƯỞNG KHOA TRƯỞNG BỘ MƠN CHỦ NHIỆM ĐỀ TÀI HIỆU TRƯỞNG DUYỆT Thành phố Hồ Chí Minh, năm 2020 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm GIỚI THIỆU Cấu trúc liệu môn học sinh viên ngành Công Nghệ Thông Tin Hiểu vận dụng cấu trúc liệu giải thuật sở để sinh viên tiếp cận với việc thiết kế xây dựng phần mềm sử dụng cơng cụ lập trình đại Cấu trúc liệu xem phương pháp lưu trữ liệu máy tính nhằm sử dụng cách có hiệu liệu Và để sử dụng liệu cách hiệu cần phải có thuật tốn áp dụng liệu Do vậy, cấu trúc liệu giải thuật yếu tố tách rời có liên quan chặt chẽ với Việc lựa chọn cấu trúc liệu ảnh hưởng lớn tới việc lựa chọn áp dụng giải thuật Bài giảng “Cấu Trúc Dữ Liệu” bao gồm chương, trình bày cấu trúc liệu giải thuật tin học Chương trình bày phân tích thiết kế thuật tốn Đầu tiên cách phân tích vấn đề, từ thực tiễn chương trình, cách thiết kế giải pháp cho vấn đề theo cách giải máy tính Trình bày đệ qui, khái niệm toán học Việc sử dụng đệ qui xây dựng chương trình giải vấn đề phức tạp số câu lệnh, đặc biệt vấn đề mang chất đệ qui Chương trình bày thuật tốn xếp tìm kiếm Các thuật tốn với kỹ thuật sử dụng coi kỹ thuật sở cho lập trình máy tính Các thuật toán xem xét bao gồm lớp thuật toán đơn giản thuật toán cài đặt phức tạp có thời gian thực tối ưu Chương 3, trình bày cấu trúc liệu sử dụng thông dụng mảng danh sách liên kết, ngăn xếp hàng đợi, Đó cấu trúc liệu gần gũi với cấu trúc thực tiễn Cuối phần có câu hỏi tập để sinh viên ôn luyện tự kiểm tra kiến thức Cuối tài liệu có phụ lục hướng dẫn trả lời câu hỏi, mã nguồn tham khảo tài liệu tham khảo Về nguyên tắc, cấu trúc liệu giải thuật biểu diễn cài đặt ngôn ngữ lập trình đại Tuy nhiên, để có phân tích sâu sắc có kết thực tế hơn, tác giả sử dụng ngôn ngữ lập trình C để minh hoạ cho cấu trúc liệu thuật tốn Do vậy, ngồi kiến thức tin học, sinh viên cần có kiến thức ngơn ngữ lập trình C Cuối cùng, cố gắng chắn không tránh khỏi thiếu sót Tác giả mong nhận góp ý đồng nghiệp sinh viên để tài liệu hoàn thiện MỤC LỤC CHƯƠNG 1: THIẾT KẾ GIẢI THUẬT - THUẬT GIẢI ĐỆ QUI 1 Thiết kế giải thuật 1.1 Giải thuật ngôn ngữ diễn đạt giải thuật 1.2 Các bước để giải tập toán 1 2 Thuật giải đệ quy 2.1.Khái niệm đệ qui 2.2.Thiết kế giải thuật đệ qui 2.3.Áp dụng thuật giải đệ qui 4 DANH MỤC HÌNH ẢNH CHƯƠNG CÂU HỎI VÀ BÀI TẬP CHƯƠNG 2: CÁC THUẬT GIẢI SẮP XẾP VÀ TÌM KIẾM 10 11 Một số phương pháp xếp đơn giản 1.1 Đổi chỗ trực tiếp (Interchange Sort) 1.2 Nổi bọt (Bubble Sort) 1.3 Chèn trực tiếp (Insertion Sort) 1.4 Chọn trực tiếp (Selection Sort) 1.5 Phân hoạch (Quick Sort) 1.6 Nhận xét, đánh giá 11 11 14 17 20 22 25 Một số phương pháp tìm kiếm 2.1 Tìm kiếm 2.2 Tìm kiếm nhị phân 2.3 Nhận xét, đánh giá: 27 27 29 32 DANH MỤC HÌNH ẢNH CHƯƠNG 34 CÂU HỎI VÀ BÀI TẬP 35 CHƯƠNG 3: CÁC CẤU TRÚC DỮ LIỆU 37 Danh sách liên kết đơn 37 Danh sách kiểu ngăn xếp (Stack) 2.1 Khái niệm 2.2 Cài đặt ngăn xếp mảng 2.3 Cài đặt ngăn xếp danh sách liên kết 42 42 43 45 Danh sách kiểu hàng đợi (Queue) 3.1 Khái niệm 3.2 Cài đặt hàng đợi mảng 3.3 Cài đặt hàng đợi danh sách liên kết 49 49 50 53 DANH MỤC HÌNH ẢNH CHƯƠNG 56 CÂU HỎI VÀ BÀI TẬP 57 CHƯƠNG 4: CÂY 58 Định nghĩa khái niệm 58 Cây tổng quát 58 2.1 Biểu diễn 2.2 Phép duyệt 2.3.Cây nhị phân 59 61 63 DANH MỤC HÌNH ẢNH CHƯƠNG 70 CÂU HỎI VÀ BÀI TẬP 71 TÀI LIỆU THAM KHẢO 73 GIÁO TRÌNH MƠN HỌC Tên môn học: CẤU TRÚC DỮ LIỆU Mã môn học: MH3101302 Thời gian thực môn học: 60 giờ; Kiểm tra: giờ) (Lý thuyết: 30 giờ; Thực hành: 28 giờ; I Vị trí, tính chất mơn học: - Vị trí: Mơn học bố trí sau người học học xong mơn học kỹ thuật lập trình, học kỳ - Tính chất: Là mơn học đào tạo nghề bắt buộc II Mục tiêu môn học: - Về kiến thức: + Trình bày bước phân tích, đánh giá độ phức tạp thuật tốn + Trình bày cấu trúc kiểu liệu trừu tượng, thao tác tương tứng kiểu liệu + Trình bày thuật tốn tìm kiếm, xếp - Về kỹ năng: + Vận dụng cấu trúc liệu, thao tác cấu trúc liệu sử dụng theo toán cụ thể + Vận dụng thuật tốn tìm kiếm, xếp tự cài đặt theo toán cụ thể + Vận dụng vấn đề mối quan hệ cấu trúc liệu giải thuật, phân tích thiết kế thuật tốn - Về lực tự chủ trách nhiệm: + Sinh viên có khả lựa chọn thuật toán cấu trúc liệu phù hợp cho tốn KHOA CƠNG NGHỆ THƠNG TIN III Nội dung mơn học: Nội dung tổng quát phân bổ thời gian: Số TT Thời gian (giờ) Tên chương, mục Bài tập, Tổng số Lý thuyết thực hành 4 16 Kiểm Tra Chương 1: Thiết kế giải thuật - Thuật giải đệ qui Thiết kế giải thuật 1.1 Giải thuật ngôn ngữ diễn đạt giải thuật 1.2 Các bước để giải tập toán Thuật giải đệ quy 2.1 Khái niệm đệ qui 2.2.Thiết kế giải thuật đệ qui 2.3 Áp dụng thuật giải đệ qui Chương 2: Các thuật giải xếp tìm kiếm Một số phương pháp xếp đơn giản 1.1 Đổi chỗ trực tiếp (Interchange Sort) 1.2 Nổi bọt (Bubble Sort) 1.3 Chèn trực tiếp (Insertion Sort) 1.4 Chọn trực tiếp (Selection Sort) 1.5 Phân hoạch (Quick Sort) 1.6 Nhận xét, đánh giá Một số phương pháp tìm KHOA CƠNG NGHỆ THƠNG TIN Thời gian (giờ) Số TT Tên chương, mục Bài tập, Tổng số Lý thuyết thực hành Kiểm Tra 24 12 11 12 6 60 30 28 kiếm 2.1 Tìm kiếm 2.2 Tìm kiếm nhị phân 2.3 Nhận xét, đánh giá Chương 3: Các cấu trúc liệu 1.Danh sách liên kết đơn 2.Danh sách kiểu ngăn xếp (Stack) 3.3.Danh sách kiểu hàng đợi (Queue) Chương 4: Cây Định nghĩa khái niệm Cây tổng quát 2.1 Biểu diễn 2.2 Phép duyệt 2.3 Cây nhị phân Cộng Nội dung chi tiết: Chương 1: Thiết kế giải thuật - Thuật giải đệ qui Thời gian: Mục tiêu: Trình bày bước để giải tập, dần hình thành việc thiết kế giải thuật để giải theo yêu cầu Trình bày khái niệm giải thuật đệ quy, trình bày bước xây dựng thuật giải đệ quy Qua đề xuất hướng áp dụng thuật giải đệ quy cho toán cụ thể Nội dung: KHOA CÔNG NGHỆ THÔNG TIN Thiết kế giải thuật 1.1.Giải thuật ngôn ngữ diễn đạt giải thuật 1.2.Các bước để giải tập toán Thuật giải đệ quy 2.1.Khái niệm đệ qui 2.2.Thiết kế giải thuật đệ qui 2.3.Áp dụng thuật giải đệ qui Chương 2: Các thuật giải xếp tìm kiếm Thời gian: 16 Mục tiêu: Tình bày giải thuật xếp tìm kiếm Phân biệt thuật tốn xếp tìm kiếm Sinh viên có khả cài đặt thuật tốn xếp tìm kiếm Nội dung: Một số phương pháp xếp đơn giản 1.1 Đổi chỗ trực tiếp (Interchange Sort) 1.2 Nổi bọt (Bubble Sort) 1.3 Chèn trực tiếp (Insertion Sort) 1.4 Chọn trực tiếp (Selection Sort) 1.5 Phân hoạch (Quick Sort) 1.6 Nhận xét, đánh giá Một số phương pháp tìm kiếm 2.1 Tìm kiếm 2.2 Tìm kiếm nhị phân 2.3 Nhận xét, đánh giá Chương 3: Các cấu trúc liệu Thời gian: 24 Mục tiêu: Trình bày cấu trúc liệu ngăn xếp, hàng đợi, danh sách liên kết Trình bày thao tác cấu trúc liệu Vận dụng cấu trúc liệu vào toán cụ thể KHOA CÔNG NGHỆ THÔNG TIN Chương 4: Cây (3+1) x 3/ (9-5+2) - (3 x (7 - 4) + 6) = -13 KHOA CÔNG NGHỆ THÔNG TIN Trang 69 Chương 4: Cây DANH MỤC HÌNH ẢNH CHƯƠNG Hình Hình ảnh Cây mơ tả thứ tự đọc sách 59 Hình Hình ảnh tính chấy Cây 59 Hình Biểu diễn mảng nút cha 60 Hình 4 Cài đặt danh sách nút 61 Hình Hình ảnh mơ tả phép duyệt 62 Hình Hình ảnh nhị phân 64 Hình Hình ảnh mơ tả tính chất nhị phân 64 KHOA CÔNG NGHỆ THÔNG TIN Trang 70 Chương 4: Cây CÂU HỎI VÀ BÀI TẬP Cho hình vẽ sau: hình vẽ cây, hình vẽ khơng giải thích? (a) (b) (d) (c) Với nhị phân bên dưới, biểu thị theo phương pháp dùng mảng danh sách liên kết Cho nhị phân T chứa số nguyên, 36 15 40 23 a Duyệt theo thứ tự NLR? KHOA CÔNG NGHỆ THÔNG TIN Trang 71 Chương 4: Cây b Duyệt theo thứ tự LNR? c Duyệt theo thứ tự LRN? Hãy vẽ nhị phân tìm kiếm T biết duyệt T theo thứ tự Node – Left Right dãy sau: 40, 5, 35, 15, 13, 16, 45, 56, 48, 47, 49? Hãy vẽ nhị phân tìm kiếm T biết duyệt T theo thứ tự Left - Right Node dãy sau: 3, 8, 11, 6, 19, 37, 25, 21, 15, 12? Hãy vẽ nhị phân tìm kiếm T biết duyệt T theo thứ tự Node - LeftRight dãy sau: 12, 6, 3, 11, 8, 15, 21, 19, 25, 37? Viết chương trình tạo , tra cứu sữa chữa tử điển Anh – Việt KHOA CÔNG NGHỆ THÔNG TIN Trang 72 TÀI LIỆU THAM KHẢO TT Tên tác giả PGS.TS Hàn Viết Thuận ThS Nguyễn Anh Phương Robert Sedgewick Tên sách – giáo trình NXB Năm XB Cấu trúc liệu giải thuật Đại Học Kinh Tế Quốc Dân 2018 Algorithms Bản dịch tiếng Việt, NXB Khoa học Kỹ thuật, 1994 73 PHỤ LỤC MÃ NGUỒN THAM KHẢO CHƯƠNG TRÌNH SẮP XẾP CHÈN #include #include #include #include #include int *a, n, m; void Init(); void In(); void Init(){ int i; printf("\n Tao lap day so:"); for (i=0; i temp)&&(j>=0)) { a[j+1]=a[j]; j ; } a[j+1]=temp; } } void In(){ register int i; for(i=0;i a[j]){ temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; no_exchange = 0; } } i++; } while (!no_exchange && (i < n-1)); } void In(){ register int i; for(i=0;i item = x; q-> next = *p; *p = q; printf("\nThem nut vao dau danh sach cong, bam phim bat ky de tiep tuc!"); getch(); } void Insert_End(listnode *p, int x){ listnode q, r; q = (listnode)malloc(sizeof(struct node)); q-> item = x; q->next=NULL; if (*p==NULL) *p=q; else{ KHOA CÔNG NGHỆ THÔNG TIN Trang 77 r = *p; while (r->next != NULL) r = r->next; r->next = q; } printf("\nThem nut vao cuoi danh sach cong, bam phim bat ky de tiep tuc!"); getch(); } void Insert_Middle(listnode *p, int position, int x){ int count=1, found=0; listnode q, r; r = *p; while ((r != NULL)&&(found==0)){ if (count == position){ q = (listnode)malloc(sizeof(struct node)); q-> item = x; q-> next = r-> next; r-> next = q; found = 1; } count ++; r = r-> next; } if (found==0) printf("Khong tim thay vi tri can chen "); else printf("\nThem nut vao vi tri %d cong, bam phim bat ky de tiep tuc!", position); getch(); } void Remove_Begin(listnode *p){ KHOA CÔNG NGHỆ THÔNG TIN Trang 78 listnode q; if (*p == NULL) return; q = *p; *p = (*p)-> next; q-> next = NULL; free(q); printf("\nXoa nut dau danh sach cong, bam phim bat ky de tiep tuc!"); getch(); } void Remove_End(listnode *p){ listnode q, r; if (*p == NULL) return; if ((*p)-> next == NULL) { Remove_Begin(*p); return; } r = *p; while (r-> next != NULL) { q = r; r = r-> next; } q-> next = NULL; free(r); printf("\nXoa nut cuoi danh sach cong, bam phim bat ky de tiep tuc!"); getch(); KHOA CÔNG NGHỆ THÔNG TIN Trang 79 } void Remove_Middle(listnode *p, int position){ int count=1, found=0; listnode q, r; r = *p; while ((r != NULL)&&(found==0)){ if (count == position){ q = r-> next; r-> next = q-> next; q-> next = NULL; free (q); found = 1; } count ++; r = r-> next; } if (found==0) printf("Khong tim thay vi tri can xoa"); else printf("\nXoa nut o vi tri %d cong, bam phim bat ky de tiep tuc!", position); getch(); } void PrintList(listnode p){ listnode q; q=p; while (q!=NULL){ printf("%d ",q->item); q=q->next; } KHOA CÔNG NGHỆ THÔNG TIN Trang 80 printf("\nBam phim bat ky de tiep tuc"); getch(); } void main(void){ listnode *p; int x, chon, vitri; *p=NULL; do{ clrscr(); printf("CHUWONG TRINH MINH HOA SU DUNG DANH SACH LIEN KET DON\n\n"); printf("Moi ban chon chuc nang:\n"); printf(" Khoi tao danh sach\n"); printf(" Them phan tu vao dau danh sach\n"); printf(" Them phan tu vao cuoi danh sach\n"); printf(" Them phan tu va giua danh sach\n"); printf(" Xoa phan tu o dau danh sach\n"); printf(" Xoa phan tu o cuoi danh sach\n"); printf("7 xoa phan tu o giua danh sach\n"); printf(" In danh sach\n"); printf(" Thoat khoi chuong trinh\n"); printf("Lua chon: "); scanf("%d",&chon); switch (chon) { case 1: *p=NULL; break; case 2: clrscr(); printf("Cho x= "); KHOA CÔNG NGHỆ THÔNG TIN Trang 81 scanf("%d",&x); Insert_Begin(p, x); break; case 3: clrscr(); printf("Cho x= "); scanf("%d",&x); Insert_End(p,x); break; case 4: clrscr(); printf("Cho vi tri can chen:"); scanf("%d",&vitri); printf("\nCho x= "); scanf("%d",&x); Insert_Middle(p, vitri, x); break; case 5: clrscr(); Remove_Begin(p); break; case 6: clrscr(); Remove_End(p); break; case 7: clrscr(); printf("Cho vi tri can xoa: "); scanf("%d",&vitri); Remove_Middle(p,vitri); KHOA CÔNG NGHỆ THÔNG TIN Trang 82 break; case 8:: PrintList(*p); break; default: break; } }while (chon!=9); return; } KHOA CÔNG NGHỆ THÔNG TIN Trang 83 ... KHOA CÔNG NGHỆ THÔNG TIN Trang 36 Chương 3: Các cấu trúc liệu CHƯƠNG 3: CÁC CẤU TRÚC DỮ LIỆU Mục tiêu: Trình bày cấu trúc liệu ngăn xếp, hàng đợi, danh sách liên kết Trình bày thao tác cấu trúc liệu. .. Các cấu trúc liệu Thời gian: 24 Mục tiêu: Trình bày cấu trúc liệu ngăn xếp, hàng đợi, danh sách liên kết Trình bày thao tác cấu trúc liệu Vận dụng cấu trúc liệu vào toán cụ thể KHOA CÔNG NGHỆ THÔNG... THÀNH PHỐ HỒ CHÍ MINH GIÁO TRÌNH MƠN HỌC: CẤU TRÚC DỮ LIỆU NGÀNH: HỆ THỐNG THÔNG TIN, THIẾT KẾ TRANG WEB, CÔNG NGHỆ THƠNG TIN (ỨNG DỤNG PHẦN MỀM) TRÌNH ĐỘ: CAO ĐẲNG THÔNG TIN CHỦ NHIỆM ĐỀ TÀI