1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Bao Ngoc

20 2 0

Đ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

TRƯỜNG CAO ĐẲNG NGHỀ ĐẮK LẮK KHOA ĐIỆN TỬ - TIN HỌC GIÁO TRÌNH CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT NGHỀ: CƠNG NGHỆ THƠNG TIN TRÌNH ĐỘ: CAO ĐẲNG NGHỀ - TRUNG CẤP NGHỀ Người biên soạn: Lưu hành nội - 2014 Nguyễn Thị Thu Hà Lời nói đầu Hiện nay, Trường chưa có giáo trình Cấu trúc liệu & giải thuật Đặc biệt thị trường khơng có tài liệu học tập, tham khảo phù hợp với chương trình khung Cao đẳng nghề, trung cấp nghề thuộc nghề Công nghệ thông tin (CNTT) q trình đào tạo nghề Nhóm tác giả biên soạn giáo trình lập trình nhằm mục đích giúp học sinh, sinh viên (HSSV) sử dụng giáo trình làm tài liệu nghiên cứu học tập cách thuận tiện Chương trình mơn học sử dụng để giảng dạy cho sinh viên cao đẳng nghề Công nghệ thông tin (ứng dụng phần mềm) làm tài liệu tham khảo cho nghề thuộc ngành nghề kỹ thuật Vậy, mong góp ý bạn đọc để tài liệu ngày hoàn thiện hơn, xin chân thành cảm ơn Đắk Lắk, ngày 02 tháng 09 năm 2014 Tham gia biên soạn Chủ biên: Nguyễn Thị Thu Hà ThS Lê Văn Tùng CHƯƠNG TRÌNH MƠN HỌC CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Mã số môn học: MH 12; Thời gian môn học: 75 giờ; (Lý thuyết: 24 giờ; Thực hành: 51 giờ) I VỊ TRÍ, TÍNH CHẤT CỦA MÔN HỌC: Cấu trúc liệu giải thuật môn sở nghề bắt buộc, học sau mơn học Tin học, Lập trình II MỤC TIÊU CỦA MÔN HỌC: - Hiểu mối quan hệ cấu trúc liệu giải thuật việc xây dựng chương trình; - Hiểu ý nghĩa, cấu trúc, cách khai báo, thao tác loại cấu trúc liệu: mảng, danh sách liên kết, giải thuật xử lý cấu trúc liệu đó; - Xây dựng cấu trúc liệu mô tả tường minh giải thuật cho số toán ứng dụng cụ thể; - Cài đặt số giải thuật ngôn ngữ lập trình C;  Coi việc học mơn tảng cho môn học chuyên môn tiếp theo, nghiêm túc tích cực việc học lý thuyết làm tập, chủ động tìm kiếm nguồn tài liệu liên quan đến môn học III NỘI DUNG MÔN HỌC: Nội dung tổng quát phân bổ thời gian: Số TT I II III IV V VI Tên chương, mục Thiết kế phân tích giải thuật Các kiểu liệu sở Mảng, danh sách kiểu liệu trừu tượng Cây Sắp xếp Tìm kiếm Tổng cộng Thời gian Thực hành, Bài tập 11 Kiểm tra* (LT TH) 0 20 13 15 10 75 22 10 49 0 Tổng số Lý thuyết 15 Chương 1: Thiết kế phân tích giải thuật Mở đầu: Có thể nói khơng có chương trình máy tính mà khơng có liệu để xử lý Dữ liệu liệu đưa vào (input data), liệu trung gian liệu đưa (output data) Do vậy, việc tổ chức để lưu trữ liệu phục vụ cho chương trình có ý nghĩa quan trọng toàn hệ thống chương trình Việc xây dựng cấu trúc liệu định lớn đến chất lượng công sức người lập trình việc thiết kế, cài đặt chương trình Thiết kế giải thuật: Khái niệm giải thuật hay thuật giải mà nhiều gọi thuật toán dùng để phương pháp hay cách thức (method) để giải vần đề Giải thuật minh họa ngôn ngữ tự nhiên (natural language), sơ đồ (flow chart) mã giả (pseudo code) Trong thực tế, giải thuật thường minh họa hay thể mã giả tựa hay số ngơn ngữ lập trình (thường ngơn ngữ mà người lập trình chọn để cài đặt thuật toán), chẳng hạn C, Pascal, ? Khi xác định cấu trúc liệu thích hợp, người lập trình bắt đầu tiến hành xây dựng thuật giải tương ứng theo yêu cầu toán đặt sở cấu trúc liệu chọn Để giải vấn đề có nhiều phương pháp, lựa chọn phương pháp phù hợp việc mà người lập trình phải cân nhắc tính tốn Sự lựa chọn góp phần đáng kể việc giảm bớt cơng việc người lập trình phần cài đặt thuật tốn ngơn ngữ cụ thể Phân tích giải thuật: Mối quan hệ cấu trúc liệu Giải thuật minh họa đẳng thức: Cấu trúc liệu + Giải thuật = Chương trình Như vậy, có cấu trúc liệu tốt, nắm vững giải thuật thực việc thể chương trình ngơn ngữ cụ thể vấn đề thời gian Khi có cấu trúc liệu mà chưa tìm thuật giải khơng thể có chương trình ngược lại khơng thể có Thuật giải chưa có cấu trúc liệu Một chương trình máy tính hồn thiện có đầy đủ Cấu trúc liệu để lưu trữ liệu Giải thuật xử lý liệu theo yêu cầu toán đặt 3.1 Đánh giá cấu trúc liệu giải thuật 3.1.1 Các tiêu chuẩn đánh giá cấu trúc liệu Để đánh giá cấu trúc liệu thường dựa vào số tiêu chí sau: - Cấu trúc liệu phải tiết kiệm tài nguyên (bộ nhớ trong), - Cấu trúc liệu phải phản ảnh thực tế toán, - Cấu trúc liệu phải dễ dàng việc thao tác liệu 3.2 Đánh giá độ phức tạp thuật toán Việc đánh giá độ phức tạp thuật tốn khơng dễ dàng chút Ở dây, muốn ước lượng thời gian thực thuận tốn T(n) để có so sánh tương đối thuật toán với Trong thực tế, thời gian thực thuật tốn cịn phụ thuộc nhiều vào điều kiện khác cấu tạo máy tính, liệu đưa vào, xem xét mức độ lượng liệu đưa vào ban đầu cho thuật toán thực Để ước lượng thời gian thực thuật tốn xem xét thời gian thực thuật toán hai trường hợp: - Trong trường hợp tốt nhất: Tmin - Trong trường hợp xấu nhất: Tmax Từ ước lượng thời gian thực trung bình thuật toán: Tavg Một số giải thuật bản: 4.1: Thuật tốn đơn giản Có thể nói khơng có chương trình máy tính mà khơng có liệu để xử lý Dữ liệu liệu đưa vào (input data), liệu trung gian liệu (output data) Ví dụ: Nhập vào số chữ số, in tổng chữ số #include int n, dv, ch, tr, tong; void main() { printf(“Nhap vao mot so chu so:”); scanf(“%d”, &n); dv = n mod 10; ch = (n div 10) mod 10; tr = (n div 100) mod 10; tong = dv+ ch+ tr; printf(“Tong so la: %d”, tong); getchar(); } 4.2: Thuật toán phức tạp: Ví dụ : Dãy số Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … Bắt đầu 1, số tổng hai số trước Dãy Fibonacci khai báo đệ quy sau: Fibonacci(0) = Fibonacci(1) = Fibonacci(n) = Fibonacci(n – 1) + Fibonacci(n – 2) 4.3: Giải thuật đệ quy: Bất hàm triệu gọi hàm khác, hàm tự triệu gọi Kiểu hàm gọi hàm đệ quy 5 Phương pháp đệ quy thường dùng phổ biến ứng dụng mà cách giải thể việc áp dụng liên tiếp giải pháp cho tập hợp tốn Ví dụ 1: tính n! n! = 1*2*3*…*(n-2)*(n-1)*n với n >= 0! = /* Ham tinh giai thua */ #include #include void main(void) { int in; long giaithua(int); printf("Nhap vao so n: "); scanf("%d", &in); printf("%d! = %ld.\n", in, giaithua(in)); getch(); } long giaithua(int in) { int i; long ltich = 1; if (in == 0) return (1L); else { for (i = 1; i Để khai báo biến kiểu ký tự ta khai báo biến kiểu unsigned char Mỗi số miền giá trị kiểu unsigned char tương ứng với ký tự bảng mã ASCII Kiểu char: lưu số nguyên từ -128 đến 127 Kiểu char sử dụng bit trái để làm bit dấu => Nếu gán giá trị > 127 cho biến kiểu char giá trị biến số âm (?) 2.2 Kiểu số nguyên bytes (16 bits) Kiểu số nguyên bytes gồm có kiểu sau: enum Từ -32,768 đến 32,767 unsigned int Từ đến 65,535 short int Từ -32,768 đến 32,767 int Từ -32,768 đến 32,767 Kiểu enum, short int, int : Lưu số nguyên từ -32768 đến 32767 Sử dụng bit bên trái để làm bit dấu => Nếu gán giá trị >32767 cho biến có kiểu giá trị biến số âm Kiểu unsigned int: Kiểu unsigned int lưu số nguyên dương từ đến 65535 2.3 Kiểu số nguyên byte (32 bits) Kiểu số nguyên bytes hay gọi số nguyên dài (long) gồm có kiểu sau: unsigned long Từ đến 4,294,967,295 long Từ -2,147,483,648 đến 2,147,483,647 Kiểu long : Lưu số nguyên từ -2147483658 đến 2147483647 Sử dụng bit bên trái để làm bit dấu => Nếu gán giá trị >2147483647 cho biến có kiểu long giá trị biến số âm Kiểu unsigned long: Kiểu unsigned long lưu số nguyên dương từ đến 4294967295 Kiểu số thực thường thực với phép toán: O =?{+, -, *, /, , =, =, ?}? 2.4 Kiểu số thực: Kiểu số thực dùng để lưu số thực hay số có dấu chấm thập phân gồm có kiểu sau: float bytes Từ 3.4 * 10-38 đến 3.4 * 1038 double bytes Từ 1.7 * 10-308 đến 1.7 * 10308 long double 10 bytes Từ 3.4 *10-4932 đến 1.1 *104932 Mỗi kiểu số thực có miền giá trị độ xác (số số lẻ) khác Tùy vào nhu cầu sử dụng mà ta khai báo biến thuộc kiểu Ngoài ta cịn có kiểu liệu void, kiểu mang ý nghĩa kiểu rỗng không chứa giá trị Kiểu số nguyên thường thực với phép toán: O =?{+, -, *, /, DIV, MOD, , =, =, ?}? 2.5 Kiểu ký tự: Có thể có kích thước sau: + Kiểu ký tự byte + Kiểu ký tự bytes Kiểu ký tự thường thực với phép toán: O =??{+, -, , =, =, ORD, CHR, ?}? - Kiểu chuỗi ký tự: Có kích thước tùy thuộc vào ngơn ngữ lập trình Kiểu chuỗi ký tự thường thực với phép toán: O =??{+,???, , =, =, Length, Trunc, ?}? - Kiểu luận lý: Thường có kích thước byte Kiểu luận lý thường thực với phép toán: O =?{NOT, AND, OR, XOR, , =, =, ?}? Các kiểu liệu có cấu trúc 3.1 Khái niệm: Kiểu cấu trúc (Structure) kiểu liệu bao gồm nhiều thành phần có kiểu khác nhau, thành phần gọi trường (field) Sự khác biệt kiểu cấu trúc kiểu mảng là: phần tử mảng kiểu phần tử kiểu cấu trúc có kiểu khác Hình ảnh kiểu cấu trúc minh họa: 3.2 Định nghĩa kiểu cấu trúc struct { ; ; …… ; }; Trong đó: - : tên đặt theo quy tắc đặt tên danh biểu; tên mang ý nghĩa tên kiểu cấu trúc - (i=1 n): trường cấu trúc có liệu thuộc kiểu (tên trường phải tên đặt theo quy tắc đặt tên danh biểu) Ví dụ 1: Để quản lý ngày, tháng, năm ngày năm ta khai báo kiểu cấu trúc gồm thông tin: ngày, tháng, năm struct NgayThang { unsigned char Ngay; unsigned char Thang; unsigned int Nam; }; typedef struct { 10 unsigned char Ngay; unsigned char Thang; unsigned int Nam; } NgayThang; Ví dụ 2: Mỗi sinh viên cần quản lý thông tin: mã số sinh viên, họ tên, ngày tháng năm sinh, giới tính, địa thường trú Lúc ta khai báo struct gồm thông tin struct SinhVien { char MSSV[10]; char HoTen[40]; struct NgayThang NgaySinh; int Phai; char DiaChi[40]; }; typedef struct { char MSSV[10]; char HoTen[40]; NgayThang NgaySinh; int Phai; char DiaChi[40]; } SinhVien; 3.3 Khai báo biến cấu trúc Việc khai báo biến cấu trúc tương tự khai báo biến thuộc kiểu liệu chuẩn Cú pháp: - Đối với cấu trúc định nghĩa theo cách 1: struct [, …]; - Đối với cấu trúc định nghĩa theo cách 2: [, …]; Ví dụ: Khai báo biến NgaySinh có kiểu cấu trúc NgayThang; biến SV có kiểu cấu trúc SinhVien struct NgayThang NgaySinh; struct SinhVien SV; NgayThang NgaySinh; SinhVien SV; kiểu tập hợp: 4.1 khái niệm: Đối với kiểu liệu ta biết kiểu số, kiểu mảng, kiểu cấu trúc liệu kiểu tập hợp (typedef) kiểu liệu bao gồm nhiều thành phần có kiểu liệu giống hoặ khác nhau, thành phần gọi trường (field) 11 4.2.Khai báo biến tập hợp: Sử dụng từ khóa typedef (Type definitions) để định nghĩa kiểu: Typedef struct { ; ; …… ; } ; Trong đó: - typedef (Type definitions): kiểu người dùng định nghĩa - : tên đặt theo quy tắc đặt tên danh biểu; tên mang ý nghĩa tên kiểu cấu trúc (i=1 n): trường cấu trúc có liệu thuộc kiểu liệu Ví dụ 1: Để quản lý ngày, tháng, năm ngày năm ta khai báo kiểu cấu trúc gồm thông tin: ngày, tháng, năm Typedef struct { unsigned char Ngay; unsigned char Thang; unsigned int Nam; } NgayThang; Ví dụ 2: Mỗi sinh viên cần quản lý thông tin: mã số sinh viên, họ tên, ngày tháng năm sinh, giới tính, địa thường trú Lúc ta khai báo struct gồm thông tin typedef struct { char MSSV[10]; char HoTen[40]; NgayThang NgaySinh; int Phai; char DiaChi[40]; } SinhVien; 4.3 Khai báo biến kiểu tập hợp: Việc khai báo biến tập hợp tương tự khai báo biến thuộc kiểu liệu chuẩn Cú pháp: - Đối với cấu trúc định nghĩa theo cách 1: struct [, …]; - Đối với cấu trúc định nghĩa theo cách 2: [, …]; Ví dụ: Khai báo biến NgaySinh có kiểu cấu trúc NgayThang; biến SV có kiểu 12 cấu trúc SinhVien struct NgayThang NgaySinh; struct SinhVien SV; NgayThang NgaySinh; SinhVien SV; 5.Câu hỏi Bài tập Trình bày tầm quan trọng Cấu trúc liệu Giải thuật người lập trình? Các tiêu chuẩn để đánh giá cấu trúc liệu giải thuật? Khi xây dựng giải thuật có cần thiết phải quan tâm tới cấu trúc liệu hay không? Tại sao? Liệt kê kiểu liệu sở, kiểu liệu có cấu trúc C, Pascal? 13 Chương 3: Mảng, danh sách kiểu liệu trìu tượng Mảng: Mỗi biến biểu diễn giá trị Để biểu diễn dãy số hay bảng số ta dung nhiều biến cách khơng thuận lợi trường hợp ta có khái niệm mảng khái niệm mảng ngôn ngữ C giống khái niệm ma trận đại số tuyến tính Mảng hiểu tập hợp nhiều phần tử có kiểu giá trị cùng chung tên Mỗi phần tử mảng biểu diễn giá trị Có kiểu biến có nhiêu kiểu mảng mảng cần khai báo để định rõ: loại mảng: int, float, double,… Tên mảng Số chiều dài kích thước chiều Khái niệm kiểu mảng tên mảng giống khái niệm kiểu biến tên biến ta giải thích số chiều kích thước chiều thong qua ví dụ cụ thể Các khai báo: int a[10],b[4][2]; float x[5],y[3][3]; Chú ý: Các phần tử mảng cấp phát khoản nhớ lien tiếp nhớ Nói cách khác, phần tử mảng liên tiếp Trong nhớ, phần tử mảng hai chiều xếp theo hang Chỉ số mảng: Một phần tử cụ thể mảng xác định nhờ số Chỉ số mảng phải có giá trị int khơng vượt kích thước tương ứng số số số chiều mảng Giả sử z,b,x,y khai báo trên, giả sử i,j biến nguyên i=2, J=1, đó: a[j+i-1] a[2] b[j+i][2-i] b[3][0] y[i][j] y[2][1] Chú ý: Mảng có chiều ta phải viết nhiêu số ta viết sau sai: y[i]( y mảng hai chiều),vv… Biểu thức dung làm số thực phần nguyên biểu thức thực số mảng Ví dụ: A[2.5] a[2] 14 B[1.9] a[1] *Khi số vượt ngồi kích thước mảng, máy khơng báo lỗi, truy cập đến vùng nhớ bên ngồi mảng làm loạn chương trình Khái niệm danh sách: Danh sách tập hợp phần tử có kiểu liệu xác định chúng có mối liên hệ Số phần tử danh sách gọi chiều dài danh sách Một danh sách có chiều dài danh sách rỗng 2.1 Danh sách liên kết (Linked List) 2.1.1 Định nghĩa Danh sách liên kết tập hợp phần tử mà chúng có nối kết với thơng qua vùng liên kết chúng Sự nối kết phần tử danh sách liên kết quản lý, ràng buộc lẫnnhau nội dung phần tử địa định vị phần tử Tùy thu ộc vào mức độvà cách thức nối kết mà danh sách liên kết chia nhiều loại khác nhau: - Danh sách liên kết đơn; - Danh sách liên kết đôi/kép; - Danh sách đa liên kết; - Danh sách liên kết vòng (vòng đơn, vòng đơi) Mỗi loại danh sách có cách biểu diễn phần tử (cấu trúc liệu)riêng cá cthao tác Trong tài liệu trình bày 02 loại danh sách liên kết cơbản danh sách liên kết đơn danh sách liên kết đôi 2.1 Danh sách liên kết (Linked List) 2.1.1 Định nghĩa Danh sách liên kết tập hợp phần tử mà chúng có nối kết với thông qua vùng liên kết chúng Sự nối kết phần tử danh sách liên kết quản lý, ràng buộc lẫnnhau nội dung phần tử địa định vị phần tử Tùy thu ộc vào mức độvà cách thức nối kết mà danh sách liên kết chia nhiều loại khác nhau: - Danh sách liên kết đơn; - Danh sách liên kết đôi/kép; - Danh sách đa liên kết; - Danh sách liên kết vòng (vịng đơn, vịng đơi) Mỗi loại danh sách có cách biểu diễn phần tử (cấu trúc liệu)riêng cá cthao táctrên Trong tài liệu trình bày 02 loại danh sách liên kết cơbản danh sách liên kết đơn 2.1 Danh sch lin kết (Linked List) 2.1.1 Định nghĩa 15 Danh sch lin kết l tập hợp cc phần tử m chng cĩ nối kết với thơng qua vng lin kết chng Sự nối kết cc phần tử danh sch lin kết đĩ l quản lý, rng buộc lẫnnhau nội dung phần tử ny v địa định vị phần tử Ty thuộc v o mức độv cch thức nối kết m danh sch lin kết cĩ thể chia nhiều loại khc nhau: - Danh sch lin kết đơn; - Danh sch lin kết đơi/kp; - Danh sch đa lin kết; - Danh sch lin kết vịng (vịng đơn, vịng đơi) Mỗi loại danh sch cĩ cch biểu diễn cc phần tử (cấu trc liệu)ring v ccthao tc trn đĩ Trong ti liệu ny chng ta trình by 02 loại danh sch lin kết cơbản l danh sc h lin kết đơn v danh sch lin kết đơi typedef SLL_OneNode * SLL_Type; Để quản lý danh sách liên kết sử dụng nhiều phương pháp khácnhau tương ứng với phương pháp có cấu trúc liệukhác nhau, cụ thể: - Quản lý địa phần tử đầu danh sách: SLL_Type SLList1; Hình ảnh minh họa: SLList1 N ULL 15 10 20 18 40 35 30 - Quản lý địa phần tử đầu cuối danh sách: typedef struct SLL_PairNode { SLL_Type SLLFirst; SLL_Type SLLLast; } SLLP_Type; SLLP_Type SLList2; Hình ảnh minh họa: SLLFirst 15 10 20 18 40 SLLLast NULL 35 30 - Quản lý địa phần tử đầu, địa phần tử cuối số phần tử danh sách: typedef struct SLL_PairNNode { SLL_Type SLLFirst; SLL_Type SLLLast; unsigned NumNode; } SLLPN_Type; SLLPN_Type SLList3; Hình ảnh minh họa: 16 SLLFirst 15 10 SLLLast NULL 35 30 20 18 40 NumNode = B Các thao tác danh sách liên kết đơn: Với cách quản lý khác danh sách liên kết đơn , thao tác sẽcó khác mặt chi tiết song nội dung có khác Do vậy, trình bày thao tác theo cách quản lý thứ (quản lý địa chỉcủa phần tử đầu danh sách liên kết đơn), cách quản lý khác sinh viên tự vận dụng để điều chỉnh cho thích hợp a Khởi tạo danh sách (Initialize): Trong thao tác đơn giản cho giá trị trỏ quản lý địa ch ỉ phầntử đầu danh sách trỏ NULL Hàm khởi tạo danh sách liên kết đơn sau: void SLL_Initialize(SLL_Type First) First = NULL; return; Hình ảnh minh họa: pNext Kiểu liệu Data Con trỏ kiểu Node Ví dụ: Quản lý sinh vin struct Data { int MaSV; char HoTen[30]; }; b Tạo phần tử / nút: Nút đầu, nút cuối: +Phía sau nút cuối khơng có nút khác nên trỏ pNext nút cuối có giá trị Null +Nút đầu quản lý trỏ pHead Ta khai báo cấu trúc List giữ trỏ pHead pHead struct Data { // Thuộc tính data }; struct Node { Data info; Node *pNext; }; NULL 17 struct List { Node * pHead; }; c Thêm phần tử vào danh sách: Giả sử cần thêm phần tử có giá trị thành phần liệu NewDa ta vàotrong danh sách Việc thêm diễn đầu, cuối hay danh sách liên kết Do vậy, trình bày thao tác thêm riêng biệt nhau: a) Thêm phần tử vào đầu danh sách void ChenDau(List <, Data x) { Node* pNew = new Node; pNew->Info= x; pNew->pNext= lt.pHead; lt.pHead= pNew; } void main() { Data x; x.MaSV = 123; strcpy(x.HoTen, “Nam”); ChenDau(lop49, x); } a) Thêm phần tử vào cuối danh sách 18 void ChenCuoi(List <, Data x) { Node* pNew = new Node; pNew->Info= x; pNew->pNext= NULL; if (lt.pHead==NULL) lt.pHead= pNew; else{ Node* p = lt.pHead; while (p->pNext!=NULL) p = p->pNext; p->pNext = pNew; }} e Tìm kiếm phần tử danh sách: Thực tìm (LinearSearch) Ví dụ: cần tìm sinh viên có mã số x Node* TimKiem(List <, int x) { Node* p = lt.pHead; while (p!=NULL) { if (p->info.MaSV == x) return p; p = p->pNext; } return NULL; g Hủy danh sách: * Xóa phần tử danh sách: p Thực tìm (LinearSearch) Ví dụ: cần tìm sinh viên có mã số x Node* TimKiem(List <, int x) { Node* p = lt.pHead; while (p!=NULL) { if (p->info.MaSV == x) return p; 19 p = p->pNext; } return NULL; }  Xóa tồn danh sách Lần lượt xóa phần tử đầu danh sách danh sách trống void XoaDanhSach() { Node* p; while (lt.pHead!=NULL) { p = lt.pHead; lt.pHead = p->pNext; delete p; } } k Sao chép danh sách: Thực chất thao tác tạo danh sách NewList cách duyệt quacác nút SLList để lấy thành phần liệu tạo thành nút bổ sung nút vào cuối danh sách NewList - Thuật toán: B1: NewList = NULL B2: CurNode = SLList B3: IF (CurNode = NULL) Thực hieän Bkt B4: SLL_Add_Last(NewList, CurNode->Key) B5: CurNode = CurNode->NextNode B6: Lặp lại B3 Bkt: Kết thúc k Sắp xếp thứ tự phần tử danh sách:

Ngày đăng: 03/12/2022, 00:01

Xem thêm:

HÌNH ẢNH LIÊN QUAN

Hình ảnh của kiểu cấu trúc được minh họa: - Bao Ngoc
nh ảnh của kiểu cấu trúc được minh họa: (Trang 10)
Hình ảnh minh họa: SLList1 - Bao Ngoc
nh ảnh minh họa: SLList1 (Trang 16)

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w