Khái quát về cấu trúc dữ liệu phần 4 pdf

8 249 0
Khái quát về cấu trúc dữ liệu phần 4 pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

25 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Bổ sung dữ liệu Dữ liệuA Dữ liệuB Dữ liệuX Dữ liệuY0x00 Dữ liệuC pHead Dữ liệuT pHead Dữ liệuA Dữ liệuB Dữ liệuX Dữ liệuY0x00 Dữ liệuC pHead Dữ liệuT Bổ sung vào giữa danh sách Bổ sung vào ₫ầudanhsách 26 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Xóa bớtdữ liệu Dữ liệuA Dữ liệuB Dữ liệuX Dữ liệuY0x00 Dữ liệuC pHead Dữ liệuA Dữ liệuB Xóa dữ liệu ₫ầudanhsách Dữ liệuC Dữ liệuX Dữ liệuY0x00 pHead Xóa dữ liệugiữadanhsách 27 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Các ₫ặc ₫iểm chính  Ưu ₫iểm: —Sử dụng rấtlinhhoạt, cấpphátbộ nhớ khi cần và xóa khi không cần —Bổ sung và xóa bỏ mộtdữ liệu ₫ượcthựchiện thông qua chuyểncon trỏ, thờigianthựchiệnlàhằng số, không phụ thuộcvàochiều dài và vị trí —Cóthể truy nhậpvàduyệtcácphầntử theo kiểutuầntự  Nhược ₫iểm: —Mỗidữ liệubổ sung mới ₫ềuphải ₫ượccấpphátbộ nhớ₫ộng —Mỗidữ liệuxóabỏ₫i ₫ềuphải ₫ượcgiải phóng bộ nhớ tương ứng —Nếukiểudữ liệu không lớnthìphần overhead chiếmtỉ lệ lớn —Tìmkiếmdữ liệutheokiểutuyến tính, mấtthờigian 28 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Ví dụ: Danh sách thông báo (hộpthư) #include <string> using namespace std; struct MessageItem { string subject; string content; MessageItem* pNext; }; struct MessageList { MessageItem* pHead; }; void initMessageList(MessageList& l); void addMessage(MessageList&, const string& sj, const string& ct); bool removeMessageBySubject(MessageList& l, const string& sj); void removeAllMessages(MessageList&); 29 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu #include "List.h" void initMessageList(MessageList& l) { l.pHead = 0; } void addMessage(MessageList& l, const string& sj, const string& ct) { MessageItem* pItem = new MessageItem; pItem->content = ct; pItem->subject = sj; pItem->pNext = l.pHead; l.pHead = pItem; } void removeAllMessages(MessageList& l) { MessageItem *pItem = l.pHead; while (pItem != 0) { MessageItem* pItemNext = pItem->pNext; delete pItem; pItem = pItemNext; } l.pHead = 0; } 30 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu bool removeMessageBySubject(MessageList& l, const string& sj) { MessageItem* pItem = l.pHead; MessageItem* pItemBefore; while (pItem != 0 && pItem->subject != sj) { pItemBefore = pItem; pItem = pItem->pNext; } if (pItem != 0) { if (pItem == l.pHead) l.pHead = 0; else pItemBefore->pNext = pItem->pNext; delete pItem; } return pItem != 0; } 31 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Chương trình minh họa #include <iostream> #include "list.h" using namespace std; void main() { MessageList myMailBox; initMessageList(myMailBox); addMessage(myMailBox,"Hi","Welcome, my friend!"); addMessage(myMailBox,"Test","Test my mailbox"); addMessage(myMailBox,"Lecture Notes","Programming Techniques"); removeMessageBySubject(myMailBox,"Test"); MessageItem* pItem = myMailBox.pHead; while (pItem != 0) { cout << pItem->subject << ":" << pItem->content << '\n'; pItem = pItem->pNext; } char c; cin >> c; removeAllMessages(myMailBox); } 32 © 2004, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Bài tậpvề nhà  Xây dựng kiểu danh sách móc nốichứacácngàylễ trong nămvàý nghĩacủamỗi ngày (string), cho phép: —Bổ sung mộtngàylễ vào ₫ầudanhsách —Tìmý nghĩacủamộtngày(₫ưa ngày tháng là tham số) —Xóabỏ₫imộtngàylễở₫ầu danh sách —Xóabỏ₫imộtngàylễởgiữadanhsách(₫ưa ngày tháng là tham số) —Xóabỏ₫itoànbộ danh sách  Viếtchương trình minh họacáchsử dụng . 20 04, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Bổ sung dữ liệu Dữ liệuA Dữ liệuB Dữ liệuX Dữ liệuY0x00 Dữ liệuC pHead Dữ liệuT pHead Dữ liệuA Dữ liệuB Dữ liệuX Dữ liệuY0x00 Dữ liệuC pHead Dữ. liệuC pHead Dữ liệuT Bổ sung vào giữa danh sách Bổ sung vào ₫ầudanhsách 26 © 20 04, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Xóa bớtdữ liệu Dữ liệuA Dữ liệuB Dữ liệuX Dữ liệuY0x00 Dữ liệuC pHead Dữ. liệuY0x00 Dữ liệuC pHead Dữ liệuA Dữ liệuB Xóa dữ liệu ₫ầudanhsách Dữ liệuC Dữ liệuX Dữ liệuY0x00 pHead Xóa dữ liệugiữadanhsách 27 © 20 04, HOÀNG MINH SƠN Chương 4: Khái quát về cấutrúcdữ liệu Các ₫ặc ₫iểm

Ngày đăng: 31/07/2014, 04:20

Từ khóa liên quan

Mục lục

  • Kỹ thuật lập trình

  • Nội dung chương 4

  • 4.1 Giới thiệu chung

  • Vấn đề: Biểu diễn tập hợp dữ liệu

  • Vấn đề: Quản lý (tập hợp) dữ liệu

  • Quản lý DL thế nào là hiệu quả?

  • Các cấu trúc dữ liệu thông dụng

  • Các cấu trúc dữ liệu thông dụng (tiếp)

  • 4.2 Mảng và quản lý bộ nhớ động

  • Mảng động

  • Cấp phát và giải phóng bộ nhớ động

  • Một số điều cần lưu ý

  • Cấp phát bộ nhớ động cho biến đơn

  • Ý nghĩa của sử dụng bộ nhớ động

  • Ví dụ sử dụng bộ nhớ động trong hàm

  • Tham số đầu ra là con trỏ?

  • 4.3 Xây dựng cấu trúc Vector

  • Định nghĩa cấu trúc Vector

  • Định nghĩa các hàm cơ bản

  • Ví dụ sử dụng

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

Tài liệu liên quan