1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Trường ĐH Công nghệ Thông tin

37 10 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

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 314,5 KB

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 trình bày nội dung về danh sách liên kết kép: định nghĩa, các thao tác trên list kép; Danh sách liên kết vòng: Danh sách có nhiều mối liên kết. Mời các bạn tham khảo nội dung chi tiết.

Cấu trúc liệu vá thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT NỘIMaster DUNGTitle Style Click To Edit DANH SÁCH LIÊN KẾT kép Định Nghĩa Click To Edit Master Title Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải • Mỗi phần tử liên kết với phần tử đứng trước sau danh sách • Hình vẽ minh họa danh sách liên kết kép: A B C D CấuClick Trúc Dữ To Liệu Edit Master Title Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải • Cấu trúc liệu nút typedef struct tagDnode { Data Info; struct tagDnode *pPre; struct tagDnode *pNext; }DNode; • Cấu trúc List kép Typedef struct tagDList { DNode *pHead; DNode *pTail; }DList; CácClick Thao To TácEdit TrênMaster List Kép Title Style • Khởi tạo danh sách liên kết kép rỗng CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải • Tạo nút có thành phần liệu = x • Chèn phần tử vào danh sách – Chèn vào đầu – Chèn sau phần tử Q – Chèn vào trước phần tử Q – Chèn vào cuối danh sách • Huỷ phần tử danh sách – Hủy phần tử đầu danh sách – Hủy phần tử cuối danh sách – Hủy phần tử có khố x • Tìm phần tử danh sách • Sắp xếp danh sách CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải TạoClick Danh ToSách EditRỗng Master void CreateDList(DList &l) { l.DHead=NULL; l.DTail=NULL; } Title Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải TạoClick Nút To Có Edit Thành Phần Dữ LiệuStyle =X Master Title DNode *CreateDNode(int x) { DNode *tam; tam=new DNode; if(tam==NULL) { printf("khong du bo nho"); exit(1); } else { tam->Info=x; tam->pNext=NULL; tam->pPre=NULL; return tam; } } Thêm Nút Đầu Danh Sách Click ToVào Edit Master Title Style • Minh họa hình vẽ pHead CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải A B X C D pTail CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải CàiClick Đặt Thêm NútMaster Vào ĐầuTitle DanhStyle Sách To Edit void AddFirst(DList &l, DNode *tam) { if(l.pHead==NULL)//xau rong { l.pHead=tam; l.pTail=l.pHead; } else { tam->pNext=l.pHead; l.pHead->pPre=tam; l.pHead=tam; } } Thêm VàoTo Cuối Danh Sách Click Edit Master Title Style • Minh họa thêm phần tử vào sau danh sách pTail CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải pHead A B C D X CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải CàiClick Đặt Thêm NútMaster Vào Cuối Danh Sách To Edit Title Style void AddEnd(DList &l,DNode *tam) { if(l.pHead==NULL) { l.pHead=tam; l.pTail=l.pHead; } else { tam->pPre=l.pTail; l.pTail->pNext=tam; tam=l.pTail; } } 10 Hàng đợi 2To đầu Click Edit Master Title Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải  Do đặc tính truy xuất hai đầu deque, việc xây dựng CTDL biểu diễn phải phù hợp  Ta cài đặt CTDL hàng đợi hai đầu danh sách liên kết đơn Tuy nhiên, thao tác RemoveLast hủy phần tử cuối deque tốn chi phí O(n) Ðiều làm giảm hiệu CTDL  Thích hợp để cài đặt deque dùng danh sách liên kết kép Tất thao tác deque tốn chi phí O(1) 23 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải Danh sáchTo liên kết có thứ tự Title (Ordered List) Click Edit Master Style  Danh sách liên kết có thứ tự (gọi tắt OList) vật chứa đối tượng theo trình tự định Trình tự thường khóa xếp Việc thêm đối tượng vào OList phải bảo đảm tôn trọng thứ tự  Ta cài đặt OList DSLK đơn DSLK đôi với việc định nghĩa lại phép thêm phần tử: thêm bảo toàn thứ tự Nghĩa OList cho phép thao tác thêm phần tử cho thứ tự định nghĩa OList phải bảo toàn 24 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải Danh sáchTo liên kết có thứ tự Title (Ordered List) Click Edit Master Style Cài đặt OList DSLK đơn DSLK đôi với việc định nghĩa lại phép thêm phần tử: thêm bảo toàn thứ tự Nghĩa OList cho phép thao tác thêm phần tử cho thứ tự định nghĩa OList phải bảo tồn Có thể dùng OList để cài đặt CTDL hàng đợi có độ ưu tiên 25 CâuClick hỏi vàTo BàiEdit tập Master Title Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải Hãy cho biết nội dung stack sau thao tác dãy: EAS*Y**QUE***ST***I*ON Với chữ tượng trưng cho thao tác thêm chữ tương ứng vào stack, dấu * tượng trưng cho thao tác lấy nội dung phần tử stack in lên hình Hãy cho biết sau hồn tất chuỗi thao tác, xuất hình? Áp dụng tập với hàng đợi 26 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải CâuClick hỏi vàTo BàiEdit tập Master Title Style Trình bày thuật toán cài đặt thao tác danh sách liên kết đôi trường hợp quản lý trỏ đầu danh sách Cài đặt thuật tốn Merge danh sách liên kết đơi Cài đặt chương trình cho phép thực phép tính +,-,*,/ số có tối đa 30 chữ số, có chức nhớ (M+, M-, MC, MR) Viết chương trình thực thao tác đa thức 27 Danh sáchTo liên kết vòng Click Edit Master Title Style A B C CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải Là danh sách đơn (hoặc kép) mà phần tử cuối danh sách thay mang giá trị NULL, trỏ tới phần tử đầu danh sách 28 D CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải TìmClick phần trongMaster DSLK vòng TotửEdit Title Node *Search(LIST &l, Data x) { Node *p; p = l.pHead; do{ if (p->Info == x) return p; p = p->pNext; }while(p!=l.pHead); return p; } 29 Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải Thêm phần đầu DSLK vòng Click TotửEdit Master Title Style void AddHead(LIST &l, Node* new_ele) { if (l.pHead==NULL) { l.pHead = l.pTail = new_ele; l.pTail->pNext = l.pHead; } else{ new_ele->pNext = l.pHead; l.pTail->pNext = new_ele; l.pHead = new_ele; } } 30 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải Thêm phần cuối Master DSLK vòng Click TotửEdit Title Style void AddTail(LIST &l, Node *new_ele) { if (l.pHead==NULL) { l.pHead = l.pTail = new_ele; l.pTail->pNext = l.pHead; } else{ new_ele->pNext = l.pHead; l.pTail->pNext = new_ele; l.pTail = new_ele; } } 31 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải Thêm phần sau nút q DSLK vòng Click TotửEdit Master Title Style void AddAfterQ(List &l, Node *q, Node *new_ele) { if(l.pHead==NULL) { l.pHead= l.pTail=new_ele; l.pTail->pNext=l.pHead; } else new_ele ->pNext=q->Next; q->pNext= new_ele; if(q==l.pTail) l.Tail= new_ele; } 32 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải HủyClick phần To tử đầu DSLKTitle vòngStyle Edittrong Master void RemoveHead(List &l) { Node *p = l.pHead; if (p==NULL) return; if(l.pHead==l.pTail) l.pHead=l.pTail=NULL; else{ l.pHead=p->pNext; if(p==l.pTail) l.pTail->pNext=l.pHead; } delete p; } 33 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải HủyClick phần To tử sau q Title DSLKStyle vòng EditnútMaster void RemoveAfter(List &l, Node *q) { Node *p; if (q!=NULL){ p=q->pNext; if(p==q) l.pHead=l.pTail=NULL; else{ q->pNext=p->pNext; if(p==l.pTail) l.pTail=q; } delete p; } } 34 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải Danh sáchTo cóEdit nhiềuMaster mối liên Title kết Click Style  Là danh sách mà phần tử có nhiều khóa chúng liên kết với theo loại khóa  Thường sử dụng ứng dụng quản lý CSDL lớn với nhu cầu tìm kiếm liệu theo khóa khác  Các thao tác danh sách nhiều mối liên kết tiến hành tương tự danh sách đơn thực làm nhiều lần lần cho liên kết 35 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải Danh sáchTo tổng quát Click Edit Master Title Style  Danh sách tổng quát danh sách mà phần tử lại danh sách khác Các ví dụ sau minh họa cấu trúc danh sách tổng quát Các thao tác danh sách xây dựng dựa sở thao tác danh sách liên kết khảo sát  Ví dụ 1: typedef struct tagNode { Data info; struct tagNode* pNext; void *subList; }Node; typedef Node *pNode; 36 Danh sáchTo tổng quát Click Edit Master Title Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải  Ví dụ 2: typedef struct tagNguoi { char ten[35]; char gioitinh; int namsinh; struct tagNguoi *cha, *me; struct tagNguoi *anh, *chi, *em; }Nguoi; typedef Nguoi *pNguoi; Ví dụ 3: Đồ thị (Graph) 37 ... Click ToVào Edit Master Title Style • Minh họa hình vẽ pHead CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải A B X C D pTail CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải. .. ToVào Edit Master Title Style • Minh hoạ thêm nút vào trước nút q CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải pHead A pTail q B C X 13 D CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu. .. Thêm VàoTo Cuối Danh Sách Click Edit Master Title Style • Minh họa thêm phần tử vào sau danh sách pTail CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu vá thuật giải pHead A B C D X CẤU TRÚC DỮ LIỆU

Ngày đăng: 17/04/2022, 10:54