Tài liệu Cấu trúc dữ liệu nâng cao P1 doc

16 647 3
Tài liệu Cấu trúc dữ liệu nâng cao P1 doc

Đ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

1 GIỚI THIỆU MÔN HỌC Tóm tắt nội dung: Bài 1: Danh sách liên kết Bài 2: Một số phương pháp sắp xếp Bài 3: Hàm băm Bài 4: Cây, cây nhị phân, cây nhị phân tìm kiếm, cây cân bằng Bài 5: Cây đỏ đen Bài 6: B-cây, cây 2-3-4 Bài 7: Các đống nhị thức Bài 8: Các đống Fibonaci Bài 9: Các tập rời nhau Bài 10: Các thuật toán so khớp chuỗi Tài liệu tham khảo: 1) Data Structures, Algorithms, and Object-Oriented Programming. NXB McGraw Hill; Tác giả Gregory Heilleman -1996 2) Advanced Data Structures. NXB McGraw Hill - 1990; Tác giả Thomas H. C., Charles E.L., and Ronald L.R. 3) Giáo trình thuật toán. NXB Thống kế 2002. Nhóm Ngọc Anh Thư dịch 4) Algorithms and Data Structures in C++; Tác giả Alan Parker 2 Bài 1: Danh sách liên kết I) Danh sách liên kết đơn 1. Tổ chức danh sách đơn Danh sách liên kết bao gồm các phần tử. Mỗi phần tử của danh sách đơn là một cấu trúc chứa 2 thông tin : - Thành phần dữ liệu: lưu trữ các thông tin về bản thân phần tử . - Thành phần mối liên kết: lưu trữ địa chỉ của phần tử kế tiếp trong danh sách, hoặc lưu trữ giá trị NULL nếu là phần tử cuối danh sách. Ta có định nghĩa tổng quát typedef struct tagNode { Data Info; // Data là kiểu đã định nghĩa trước Struct tagNode* pNext; // con trỏ chỉ đến cấu trúc node }NODE; Ví dụ : Ðịnh nghĩa danh sách đơn lưu trữ hồ sơ sinh viên: typedef struct SinhVien //Data { char Ten[30]; int MaSV; }SV; typedef struct SinhvienNode { }S V phầ n sử d Ta c NOD TA I NO D VD II. C Giả typ e { }N O type { SV In struct S VNode; Các p h n tử đầu t dụng con có khai bá DE *p Để quả IL. Khai b DE *pT : Các thao t sử có các edef st Data In struct ta ODE; edef st nfo; SinhvienN hần tử tro tiên ta sẽ trỏ Head áo: pHead; ản lý địa c báo như s Tail; tác cơ bản c định ng truct tagN nfo; agNode* truct tagL Node* pN ong danh truy xuất để lưu trữ chỉ cuối c sau: n trên dan hĩa: Node pNext; List 3 Next; h sách sẽ t được cá ữ địa chỉ cùng tron nh sách đ được cấ ác phần tử đầu tiên ng danh sá ơn ấp phát đ ử tiếp theo của danh ách ta dùn động. Biế o. Thường h sách. ng con trỏ ết g ỏ }LI S NO D đượ Data LIS 1.C h Có 3 Các Th u Bắt Nế u Cài Cá c NODE NODE ST; DE *n ợc tạo a x; // T lst; // l ư hèn một 3 loại tha ch 1: Chèn uật toán : đầu: u Danh sá B B Ngược B B đặt: ch 2: Chè * pHead; * pTail; new_ele lưu thôn ưu trữ địa phần tử ao tác ch n vào đầu ách rỗng T B11 : pHea B12 : pTai lại B21 : new_ B22 : pHea èn vào cu // g tin về m a chỉ đầu, vào da n èn new_ u danh sác Thì ad = new il = pHea _ele ->pN ad = new uối danh 4 giữ địa một phần địa chỉ c nh sách: _ele vào x ch w_ele; d; Next = pH w_ele ; sách chỉ của tử sẽ đư ợ cuối của d xâu: Head; một phầ ợc tạo danh sách ần tử mớ h liên kết ới Th u Bắt Nế u Ng ư Cá c Th u Bắt Nế u Cài 2. T Th u uật toán : đầu : u Danh sá B11 : p B12 : p ược lại B21 : p B22 : p ch 3 : Ch uật toán : đầu : u ( q != N B B đặt : Tìm một p uật toán : ách rỗng pHead = n pTail = pH pTail ->pN pTail = ne èn vào d NULL) th B1 : new_ B2 : q->pN phần tử t thì new_elelm Head; Next = n ew_ele ; anh sác h ì _ele -> pN Next = ne trong dan 5 ment; ew_ele; h sau một Next = q- ew_ele ; nh sách đ t phần tử ->pNext; đơn ử q Bư ớ Bư ớ Bư ớ Cài 3. H Hủ y Th u Bắt Hủ y ớc 1: p = pH e ớc 2: Trong k p:=p- ớc 3: Nếu p ! Ngược đặt : Hủy một p y phần tử uật toán : đầu: Nếu ( p B1: p B2: B B B3: N y một ph ead; //Ch khi (p != ->pNext;/ != NULL lại: khôn phần tử k ử đầu xâu pHead != = pHea d B21 : pHe B22 : free Nếu pHead ần tử đứ o p trỏ đế NULL) v // Cho p tr L thì p trỏ ng có phần khỏi dan u: NULL) d; ead = pHe e(p); d=NULL ứng sau p 6 ến phần t và (p->Inf rỏ tới phầ tới phần n tử cần t nh sách thì // p là ead->pNe // Hủy thì pTail phần tử q tử đầu dan fo != k ) t ần tử kế tử cần tì m tìm. phần tử c ext; // tá y biến độn l = NULL q nh sách thực hiện m cần hủy ách p ra k ng do p tr L; //Xâu r n: khỏi xâu rỏ đến rỗng Th u Bắt Nế u B1: B2: Hủ y Thu Bướ Bư ớ 4. T - Ð ế - Tìm - Hu Th u Bướ uật toán : đầu: u (q!= NU p = q-> Nếu (p B21 : B22 : y 1 phần uật toán : ớc 1: Tìm p h ớc 2: Nếu ( p Hủy p r Ngược Báo k h Thăm các ếm các ph m tất cả c uỷ toàn bộ uật toán xử ớc 1: ULL) thì >Next; p != NUL q->Next free(p); tử có k h hần tử p có p!= NULL ra khỏi xâ lại hông có k; c nút trên hần tử của các phần ộ danh sá ử lý các n ì LL) thì // q = p->Nex // H hoá k ó khóa k L) thì // t âu tương ; n danh sá a danh sá tử thoả đi ách (và gi nút trên d 7 // p là q không p xt; // tách Hủy biến và phần t tìm thấy k tự hủy ph ách ách, iều kiện, iải phóng danh sách phần tử c phải là cu h p ra khỏ động do tử q đứng k hần tử sau bộ nhớ) : cần hủy uối xâu ỏi xâu p trỏ đế n g trước nó u q; n ó 8 p = pHead; //Cho p trỏ đến phần tử đầu danh sách Bước 2: Trong khi (Danh sách chưa hết) thực hiện B21 : Xử lý phần tử p; B22 : p:=p->pNext; // Cho p trỏ tới phần tử kế Thuật toán hủy toàn bộ danh sách: Bước 1: Trong khi (Danh sách chưa hết) thực hiện B11: p = pHead; pHead:=pHead->pNext; // Cho p trỏ tới phần tử kế B12: Hủy p; Bước 2: Tail = NULL; //Bảo đảm tính nhất quán khi xâu rỗng II. D 1 p h Kh a type { Dat a stru stru }D N typ e { DN O DNO }DL 1. C Có 4 Cá c Danh sác Là danh hần tử đứn ai báo: edef st a Info; ct tagD N ct tagDN NODE; edef st ODE* pH ODE* pT LIST; Chèn một 4 loại tha ch 1: Chèn ch liên kế h sách m ng trước truct tagD Node* pPr Node* pNe truct tagD Head; Tail; // trỏ t phần tử ao tác chè n vào đầu ết kép mà mỗi ph và 1 phần DNode re; // t ext; // t DList // trỏ đế n đến phần ử vào dan n new_e u danh sác 9 hần tử tron n tử đứng trỏ đến ph trỏ đến ph n phần tử n tử cuối nh sách: ele vào da ch ng danh s g sau nó. hần tử đứ hần tử đứ ử đầu danh danh sách anh sách: sách có k ứng trước ứng sau h sách h kết nối vớới Cài Cá c Cài Cá c Cài Cá c Cài 2. H - Hủ - Hủ - Hủ - Hủ - H 3. X - Tìm - Hi - Hủ đặt : ch 2: Chèn đặt : ch 3 : Chè đặt : ch 4 : Chè đặt : Hủy một p ủy phần tử ủy phần tử ủy một ph ủy một ph Hủy 1 phần Xử lý các m nút có iển thị giá ủy tòan bộ n vào cuố èn vào dan èn vào dan phần tử k ử đầu xâu ử cuối xâ hần tử đứ hần tử đứ n tử có kh nút trên khóa k á trị khóa ộ danh sá ối danh sá nh sách s nh sách tr khỏi dan u âu ng sau p h ng trước hoá k n danh sá của các n ách 10 ách au một p h rước một nh sách hần tử q phần tử q ách: nút trong hần tử q phần tử q q danh sá c q ch . gồm các phần tử. Mỗi phần tử của danh sách đơn là một cấu trúc chứa 2 thông tin : - Thành phần dữ liệu: lưu trữ các thông tin về bản thân phần tử . - Thành. đống Fibonaci Bài 9: Các tập rời nhau Bài 10: Các thuật toán so khớp chuỗi Tài liệu tham khảo: 1) Data Structures, Algorithms, and Object-Oriented Programming.

Ngày đăng: 12/12/2013, 09:16

Từ khóa liên quan

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

Tài liệu liên quan