... }; II Các phép toán danhsáchliên kết: II.1 Tạodanh sách: a Khởi tạ o danh sá ch (Initialize): dùng để khởi động danh sá ch liê n kế t, cho chương trì nh hiể u hiệ n tạ i danh sá ch liê n kế ... x danh sá ch liê n kế t First Viế t hà m Copy_List trê n danh sá ch liê n kế t để tạ o danh sá ch liê n kế t giống danh sá ch liê n kế t cũ Ghép danh sá ch liê n kế t có địa đầ u First2 o danh ... (Y/N) ? " g Sắ p xế p lạ i danh sá ch theo thứ tự m số giả m dầ n h.Ghi n danh sá ch o file tê n 'DSSV.DAT' i Nạ p danh sá ch từ file 'DSSV.DAT' o danh sá ch liê n kế t Nế u danh sá ch liê n kế t...
... }; II Các phép toán danhsáchliên kết: II.1 Tạodanh sách: a Khởi tạ o danh sá ch (Initialize): dùng để khởi động danh sá ch liê n kế t, cho chương trì nh hiể u hiệ n tạ i danh sá ch liê n kế ... x danh sá ch liê n kế t First Viế t hà m Copy_List trê n danh sá ch liê n kế t để tạ o danh sá ch liê n kế t giống danh sá ch liê n kế t cũ Ghép danh sá ch liê n kế t có địa đầ u First2 o danh ... (Y/N) ? " g Sắ p xế p lạ i danh sá ch theo thứ tự m số giả m dầ n h.Ghi n danh sá ch o file tê n 'DSSV.DAT' i Nạ p danh sá ch từ file 'DSSV.DAT' o danh sá ch liê n kế t Nế u danh sá ch liê n kế t...
... tế như: danhsáchliênkết động, cấu trúc cây, đồ thị, … Cấu trúc danhsáchliênkết III.7 III.2 Danhsáchliênkết (DSLK) III.2.1 Định nghĩa danhsách Cho kiểu liệu T Kiểu liệu danhsách TL ... tính - OL gồm tốn tử: tạodanh sách, duyệt danh sách, tìm đối tượng (thỏa tính chất đó) danh sách, chèn đối tượng vào danh sách, hủy đối tượng khỏi danh sách, xếp danhsách theo quan hệ thứ tự ... (Stack) Top (Stack, x) III.4.4 Danhsách đa liênkếtDanhsách đa liênkếtdanhsách mà nút nó, ngồi thành phần liệu (có thể có nhiều trường), gồm nhiều thành phần liênkết khác phục vụ cho mục đích...
... }; II Các phép toán danhsáchliên kết: II.1 Tạodanh sách: a Khởi tạ o danh sá ch (Initialize): dùng để khởi động danh sá ch liê n kế t, cho chương trì nh hiể u hiệ n tạ i danh sá ch liê n kế ... CHƯƠNG CáC THUậT TOáN TRÊN CấU TRúC DANHSáCHLIÊNKếT (LINKED LIST) I Khái niệm: Cấ u trúc danh sá ch liê n kế t cấ u trúc động, việ c cấ p phá t nút giả i phóng nút trê n danh sá ch xả y chương ... x danh sá ch liê n kế t First Viế t hà m Copy_List trê n danh sá ch liê n kế t để tạ o danh sá ch liê n kế t giống danh sá ch liê n kế t cũ Ghép danh sá ch liê n kế t có địa đầ u First2 o danh...
... sẵn danhsáchliênkết đơn gồm phần tử mang giá trị nguyên giá trị nguyên x Hãy tách danhsáchliênkết cho thành danhsáchliên kết: danhsách gồm phần tử có giá trị nhỏ giá trị x danhsách ... -1, trình nhập liệu kết thúc Sau đó, in phần tử có danhsáchliênkết Khi chương trình kết thúc, tất phần tử danhsáchliênkết bị xóa bỏ khỏi nhớ Phân tích - Danhsáchliênkết đơn gồm phần tử ... cần thực hiện: thêm phần tử nguyên vào đầu danhsáchliênkết (AddHead), in phần tử danhsáchliênkết (PrintList), loại bỏ tất phần tử danhsáchliênkết (RemoveAll) Chương trình mẫu #include...
... Data Q[N] ; int f, r; Dùng danhsáchliênkết Ta tạo hàng đợi cách sử dụng danhsáchliênkết đơn LIST Q; Các thao tác: Tạo hàng đợi rỗng: Lệnh Q.pHead = Q.pTail = NULL tạo hàng đợi rỗng -Kiểm tra ... Ta tạo stack cách khai báo mảng chiều với kích thước tối đa N (ví dụ, N 1000) VD: Tạo stack S quản lý đỉnh stack biến t – số phần từ stack: Data S [N]; int t; Biểu diễn Stack dùng danhsáchliên ... stack: Data S [N]; int t; Biểu diễn Stack dùng danhsáchliênkết đơn VD: LIST S; Các thao tác: Tạo Stack S rỗng (S.pHead=l.pTail= NULL tạo Stack S rỗng) Kiểm tra stack rỗng: int IsEmpty(LIST &S)...
... đến phần tử đầu danhsách DNODE* pTail; // trỏ đến phần tử cuối danhsách }DLIST; Chèn phần tử vào danh sách: Có loại thao tác chèn new_ele vào danh sách: Cách 1: Chèn vào đầu danhsách Cài đặt ... B12: Hủy p; Bước 2: Tail = NULL; //Bảo đảm tính quán xâu rỗng II Danhsáchliênkết kép Là danhsách mà phần tử danhsách có kết nối với phần tử đứng trước phần tử đứng sau Khai báo: typedef ... nút danhsách - Ðếm phần tử danh sách, - Tìm tất phần tử thoả điều kiện, - Huỷ toàn danhsách (và giải phóng nhớ) Thuật toán xử lý nút danh sách: Bước 1: p = pHead; //Cho p trỏ đến phần tử đầu danh...
... Bài 1: Danhsáchliênkết I) Danhsáchliênkết đơn Tổ chức danhsách đơn Danhsáchliênkết bao gồm phần tử Mỗi phần tử danhsách đơn cấu trúc chứa thông tin : - Thành ... tử tạo Data x; // lưu thông tin phần tử tạo LIST lst; // lưu trữ địa đầu, địa cuối danhsáchliênkết 1.Chèn phần tử vào danh sách: Có loại thao tác chèn new_ele vào xâu: Cách 1: Chèn vào đầu danh ... }SVNode; Các phần tử danhsách cấp phát động Biết phần tử ta truy xuất phần tử Thường sử dụng trỏ Head để lưu trữ địa danhsách Ta có khai báo: NODE *pHead; Để quản lý địa cuối danhsách ta dùng trỏ...
... // In danhsách h?c sinh có nam sinh t? 1980 tr? v? dây void Process ( List L ) { node * p = L.head ; // tr? p tr? t?i ph?n t? d?u tiên c?a danhsách if ( L.head == NULL ) //Ki?m tra danhsách ... L.tail -> pNext = new_ele; L.tail = new_ele; } } Xóa thông tin phần tử cuối danhsách Minh họa : Mô tả : + Nếu danhsách khác rỗng P = Tail; // p phần tử cần xóa Tail = Tail->Prev; // tách p khỏi ... NULL) L.tail = NULL; Else L.head->pPrev = NULL; } } In Danhsách người có năm sinh > 1980 Mô tả : + p = Head; // cho p trỏ đến phần tử đầu danhsách + Trong (p != NULL) (p->info.ns > 1980) thực :...
... Bài 1: Danhsáchliênkết I) Danhsáchliênkết đơn Tổ chức danhsách đơn Danhsáchliênkết bao gồm phần tử Mỗi phần tử danhsách đơn cấu trúc chứa thông tin : - Thành ... Data Q[N] ; int f, r; Dùng danhsáchliênkết Ta tạo hàng đợi cách sử dụng danhsáchliênkết đơn LIST Q; Các thao tác: Tạo hàng đợi rỗng: Lệnh Q.pHead = Q.pTail = NULL tạo hàng đợi rỗng -Kiểm tra ... đến phần tử đầu danhsách DNODE* pTail; // trỏ đến phần tử cuối danhsách }DLIST; Chèn phần tử vào danh sách: Có loại thao tác chèn new_ele vào danh sách: Cách 1: Chèn vào đầu danhsách Cài đặt...
... tử liênkết với phần tử đứng trước danh sách: A B X Y Z Danhsáchliênkết kép : Mỗi phần tử liênkết với phần tử đứng trước sau danh sách: A B X Y Z Danhsáchliênkết vòng: Phần cuối danhsách ... ? Danhsáchliênkết tập hợp phần tử nối kết với theo trình tự tuyến tính có thao tác tìm kiếm ,thêm bớt loại bỏ ,sắp xếp … ():Các loại danhsáchliênkết : Danhsáchliênkết đơn : ... gian tạodanhsách từ danhsách củ có thứ tự ( hủy danhsách củ) Ví dụ : dùng phương án cho thuật toán chọnt trực tiếp giả sử danhsách quản lý trỏ đầu xâu RESULTthực sau B Khởi tạodanhdanh sách...
... duyệt danhsách để xác nhận có mặt phần tử hay không không hiệu phương pháp băm biết Đối với ô có Giáo trình Cấu trúc liệu Giải thuật 407 Chương 18 – Ứng dụng danhsáchliênkết bảng băm cấu hình, ... băm nối kết Các phần tử chứa bảng băm có kích thước nhỏ: phần tử cần chứa trỏ đến ô sống Như vậy, với bảng băm nối kết, kích thước ghi tăng 100% phải chứa thêm trỏ liênkếtdanhsáchliênkết Tuy ... dụng danhsáchliênkết bảng băm Hình 18.1- Một trang thái Game of Life Với trạng thái khởi đầu đó, khó lường trước điều xảy Một vài cấu hình đơn giản ban đầu biến đổi qua nhiều bước để thành cấu...
... Position; typedef Position DoubleList; 34 17 DANHSÁCH RỖNG • Tạodanhsách rỗng void MakeNull_List(DoubleList *DL){ (*DL)= NULL; } • Kiểm tra danhsách rỗng int Empty (DoubleList DL){ return ... Bạn liệt kê số ứng dụng có sử dụng – Ngăn xếp – Hàng đợi 33 DANHSÁCHLIÊNKẾT KÉP • Mô hình Prev Element Next – Trong phần tử danh sách, ta dùng hai trỏ Next Previous để đến phần tử đứng sau ... } 38 19 XÓA MỘT PHẦN TỬ RA KHỎI DANHSÁCH void Delete_List (Position P, DoubleList *DL){ if (*DL == NULL) printf( Danhsach rong”); else { //Xóa phần tử danhsách nên phải thay đổi DL if (P==*DL)...
... mảng, cấu trúc Kiểu liệu có cấu trúc hướng giải vấn đề: Danhsáchliên kết, hàng đợi, ngăn xếp, cây, bảng băm, … Khái niệm kiểu liệu Tĩnh • Được định nghĩa thời điểm biên dịch Động • Được gắn kết ... cập thành phần có cấu trúc Biến cấu trúc kiểu trỏ ->thành phần cấu trúc VD: DATE *d; d->nam = 2012; 24 Bài tập Viết lại hàm Bài tập sử dụng khai báo biến kiểu trỏ cấu trúc 25 Các phương ... thang; int nam; }; typedef struct ttDate DATE; 21 Truy cập thành phần có cấu trúc Biến cấu trúc kiểu tĩnh .thành phần cấu trúc VD: DATE d; d.nam = 2012; 22 Bài tập Viết hàm nhập hàm xuất...
... báo cấu trúc danhsáchliênkết Khai báo nguyên mẫu hàm void main() { Tạo lập danhsách rỗng Nhập liệu vào danhsách Các thao tác xử lý danhsách Hủy danhsách } Cài đặt hàm Tạo lập danhsách ... LIST; Các thao tác DSLK đơn Tạo lập danhsách rỗng Kiểm tra danhsách rỗng Thêm nút vào danhsách Duyệt danhsách Xóa nút Tìm phần tử Sắp xếp danhsáchCấu trúc tổng quát chương trình ... thông qua trỏ liênkếtCấutạo DSLK Node List pHead pTail Cấutạo DSLK Quản lý toàn danhsáchliênkết thông qua trỏ đầu pHead pHead nút, “con trỏ đến nút” mà Ta quản lý danhsách cách sử dụng...
... Danhsáchliênkết vòng Chương 6: Danhsáchliênkết Giới thiệu Danhsáchliênkết đơn: phần tử liênkết với phần tử đứng sau danh sách: A B X Z Y Danhsáchliênkết đôi: phần tử liênkết ... trước sau danh sách: A Chương 6: Danhsáchliênkết B C D Giới thiệu 10 Danhsáchliênkết vòng : phần tử cuối danhsáchliênkết với phần tử đầu danh sách: A B A Chương 6: Danhsáchliênkết X ... sáchliên kết: Thêm phần tử Xóa phần tử Tìm kiếm … Chương 6: Danhsáchliênkết Có nhiều kiểu tổ chức liênkết phần tử danhsách như: Danhsáchliênkết đơn Danhsáchliênkết kép...
... đặt hàm thực thao tác thêm, xóa tìm kiếm danhsáchliênkết đôi Bài 22 Cài đặt hàm thực thao tác thêm, xóa tìm kiếm danhsáchliênkết đôi nối vòng (danh sách nối đôi sử dụng nút đầu giả) Bài 23 ... điểm mảng cấu trúc liênkết dùng để lưu trữ kiểu liệu trừu tượng danhsách tuyến tính Bài 18 Cần phải lưu trữ danhsách tuyến tính thông tin khách hàng ngày tháng siêu thị Ta chọn cấu trúc liệu ... hàm thực thao tác chèn, tìm kiếm xóa phần tử danhsáchliênkết đơn dùng vòng lặp thay dùng đệ quy Bài 10 Viết lại hàm xóa phần tử danhsáchliênkết đơn mà không cần dùng thêm hàm search_list,...
... www.kenbon.net Bài 1: Danhsáchliênkết I) Danhsáchliênkết đơn Tổ chức danhsách đơn Danhsáchliênkết bao gồm nhiều phần tử Mỗi phần tử danhsách đơn cấu trúc chứa thông tin : - Thành ... Data Q[N] ; int f, r; Dùng danhsáchliênkết Ta tạo hàng đợi cách sử dụng danhsáchliênkết đơn LIST Q; Các thao tác: Tạo hàng đợi rỗng: Lệnh Q.pHead = Q.pTail = NULL tạo hàng đợi rỗng -Kiểm tra ... đến phần tử đầu danhsách DNODE* pTail; // trỏ đến phần tử cuối danhsách }DLIST; Chèn phần tử vào danh sách: Có loại thao tác chèn new_ele vào danh sách: Cách 1: Chèn vào đầu danhsách www.kenbon.net...