ctdl-06--danh sách liên kết.pdf
TRANSCRIPT
-
Danh sch lin kt (Linked List) c cc phn 3.2, 3.3 & 3.5
Ging vin: Nguyn Mnh Hin Khoa Cng ngh thng tin Trng i hc Thy Li Email: [email protected]
Hc k 2, nm hc 2014-2015
-
Cc yu cu i vi danh sch lin kt
Chn v xa phn t mt cch hiu qu
Xa tt c cc phn t
Ton t gn
Cc ton t so snh
Hm to/hm hy
Lp mu (dng chung cho nhiu kiu phn t)
C ch hiu qu duyt cc phn t
-
Danh sch lin kt n
Thi gian chy cho cc thao tc ?
push_front / push_back (thm vo u/cui DS)
pop_front / pop_back (xa khi u/cui DS)
insert / erase (chn/xa gia DS)
u DS Cui DS
-
Danh sch lin kt n
insert
erase
-
Danh sch lin kt i
-
Ci t danh sch bng C++ Th vin chun C++ c lp list:
nh ngha trong tp tiu list
#include
ci t di dng danh sch lin kt i
Sau y chng ta s t ci t danh sch:
cng di dng danh sch lin kt i
nhng t tn l List (ch L hoa) phn bit vi list trong th vin chun C++
-
Giao din public ca List (1)
Hm to, hm hy, ton t gn:
List(); // hm to List(const List &rhs); // hm to sao chp
~List(); // hm hy
const List & operator= (const List &rhs);
Cc phng thc ch c (read-only): int size() const; // s phn t
bool empty() const; // danh sch rng?
-
Giao din public ca List (2)
Truy nhp phn t: Object & front(); // phn t u
Object & back(); // phn t cui
const Object & front() const; // phin bn hng
const Object & back() const; // phin bn hng
Truy nhp v tr dng iterator: iterator begin(); // v tr phn t u
iterator end(); // v tr sau phn t cui
const_iterator begin() const; // phin bn hng
const_iterator end() const; // phin bn hng
-
Giao din public ca List (3) Cc phng thc x l danh sch:
int push_front(const Object & x); // thm vo u
int push_back(const Object & x); // thm vo cui
int pop_front(); // xa u
int pop_back(); // xa cui
// chn x vo trc phn t xc nh bi itr
iterator insert(iterator & itr, const Object &x);
iterator erase(iterator itr); //xa v tr itr
// xa t start n trc end (khng tnh end)
iterator erase(iterator start, iterator end);
void clear(); // xa rng danh sch
-
Yu cu thi gian chy (1)
Thi gian chy O(1):
Hm to ngm nh
push_front(x), push_back(x)
pop_front(), pop_back()
insert(itr, x), erase(itr)
begin(), end()
front(), back()
size(), empty()
-
Yu cu thi gian chy (2)
Thi gian chy O(n):
Hm to sao chp
Hm hy
clear()
erase(start, end)
-
Giao din public ca iterator
Cc ton t ch c (bng/khc/ly tham chiu) int operator== (const iterator & rhs) const;
int operator!= (const iterator & rhs) const;
Object & operator* ( ) const;
Cc ton t ghi (tng/gim iterator) iterator & operator++ ( ); // tin t
iterator operator++ (int); // hu t
iterator & operator-- ( ); // tin t
iterator operator-- (int); // hu t
Yu cu thi gian chy O(1)
-
Ci t List
Danh sch lin kt i vi cc nt head v tail
Danh sch rng
-
Cc nt (node) trong danh sch
struct Node
{
Object data;
Node *prev;
Node *next;
Node(const Object &d = Object(),
Node * p = NULL, Node * n = NULL)
: data(d), prev(p), next(n) { }
};
data
prev
next
data
prev
next
data
prev
next
Khng cn cp pht b nh lin tc
-
Thao tc chn (insert)
-
Thao tc xa (erase)