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

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

8 250 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 211,27 KB

Nội dung

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