Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 130 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
130
Dung lượng
34,37 MB
Nội dung
Ch ng CÁC C U TRÚC D LI U C B N (Basic Data Structures) Structures) CTDL&TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i N i dung 3.1 Các khái ni m 3.2 M ng 3.3 Danh sách 3.4 Ng n x p 3.5 Hàng đ i CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-2 Ch ng Các c u trúc d li u c b n 3.1 Các khái ni m 3.2 M ng 3.3 Danh sách 3.4 Ng n x p 3.5 Hàng đ i CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-3 Ki u d li u (Data types) • Ki u d li u (data type) đ c đ c tr ng b i: t p giá tr (a set of values) cách bi u di n d li u (data representation) đ c s d ng chung cho t t c giá tr t p phép toán (set of operations) có th th c hi n t t c giá tr CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Các ki u d li u d ng s n (Built in data types) (Built • Trong ngơn ng l p trình th ng có m t s ki u d li u nguyên thu đ c xây d ng s n Ví d Ki u s nguyên (Integer numeric types) • byte, char, short, int, long Ki u s th c d u ph y đ ng (floating point numeric types) • float, double Các ki u nguyên thu khác (Other primitive types) • boolean Ki u m ng (Array type) • m ng ph n t ki u CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i BGA D li u đ i v i ki u nguyên thu Trong ngôn ng l p trình C Type Bits Minimum value Maximum value byte -128 127 short 16 -32768 32767 char 16 65535 int 32 -2147483648 = -231 2147483647 = 231-1 long 64 -9223372036854775808 9223372036854775807 float 32 1.40 10 45 3.40 1038 double 64 4.94 10324 1.80 10308 Có th có ki u boolean v i hai giá tr true ho c false Phép toán đ i v i ki u d li u nguyên thu • • • i v i ki u: byte, char, short, int, long +, - , *, /, %, đ i thành xâu, i v i ki u: float, double +, -, *, /, round, ceil, floor, i v i ki u: boolean ki m giá tr true, hay ki m giá tr false • Nh n th y r ng: Các ngơn ng l p trình khác có th s d ng mơ t ki u d li u khác Ch ng h n, PASCAL C có nh ng mơ t d li u s khác CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Ki u d li u tr u t BGA ng (Abstract Data Types) • Ki u d li u tr u t g m: ng (Abstract Data Type -ADT) bao t p giá tr (set of values) t p phép tốn (set of operations) có th th c hi n v i t t c giá tr • Ph n c a ki u d li u (Data Type) b b qua ADT ? cách bi u di n d li u (data representation) đ chung cho t t c giá tr c s d ng • Vi c làm có ý ngh a làm tr u t ng hoá khái ni m ki u d li u ADT khơng cịn ph thu c vào cài đ t, khơng ph thu c ngơn ng l p trình CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Ki u d li u tr u t ng (Abstract Data Type - ADT) • Ví d : ADT i t ng (Object) Phép toán (Operations) Danh sách (List) nút chèn, xố, tìm, đ nh, c nh t, đ Integer -∞ ,-1, 0, 1, +∞ +, -, *, v.v Real -∞, , +∞ +, -, *, v.v Ng n x p ph n t pop, push, isEmpty, Hàng đ i Các ph n t enqueue, dequeue, Cây nh phân nút traversal, find, th (Graphs) CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Ki u d li u tr u t ng đi, Chap02-9 ng (Abstract Data Type - ADT) • i u d hi u ki u d li u nguyên thu mà ngôn ng l p trình cài đ t s n c ng đ c coi thu c vào ki u d li u tr u t ng Trên th c t chúng cài đ t c a ki u d li u tr u t ng ngơn ng l p trình c th • nh ngh a Ta g i vi c cài đ t (implementation) m t ADT vi c di n t b i câu l nh c a m t ngơn ng l p trình đ mô t bi n ADT th t c ngơn ng l p trình đ th c hi n phép toán c a ADT, ho c ngôn ng h ng đ i t ng, l p (class) bao g m c d li u (data) ph ng th c x lý (methods) CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-10 Ki u d li u - Ki u d li u tr u t ng C u trúc d li u (Data Types, Data Structures and Abstract Data Types) • Có th nói nh ng thu t ng : ki u d li u, ki u d li u tr u t ng c u trúc d li u nghe r t gi ng nhau, nh ng th c chúng có ý ngh a khác Trong ngơn ng l p trình, ki u d li u c a bi n t p giá tr mà bi n có th nh n Ví d , bi n ki u boolean ch có th nh n giá tr ho c sai Các ki u d li u c b n có th thay đ i t ngơn ng l p trình sang NNLT khác Ta có th t o nh ng ki u d li u ph c h p t nh ng ki u d li u c b n Cách t o c ng ph thu c vào ngơn ng l p trình Ki u d li u tr u t ng mơ hình tốn h c v i nh ng phép toán xác đ nh mơ hình Nó khơng ph thu c vào ngơn ng l p trình bi u di n mơ hình tốn h c ADT ta s d ng c u trúc d li u CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-11 C u trúc d li u (Data Structures) • C u trúc d li u (Data Structures) m t h bi n, có th có ki u d li u khác nhau, đ c liên k t l i theo m t cách th c • Vi c cài đ t ADT đòi h i l a ch n c u trúc d li u đ bi u di n ADT • Ta s xét xem vi c làm đ c ti n hành nh th nào? • Ơ (cell) đ n v c s c u thành c u trúc d li u Có th hình dung ô nh h p đ ng giá tr phát sinh t m t ki u d li u c b n hay ph c h p • C u trúc d li u đ c t o nh đ t tên cho m t nhóm đ t giá tr cho m t s ô đ mô t s liên k t gi a ô • Ta xét m t s cách t o nhóm CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-12 C u trúc d li u (Data Structures) • M t nh ng cách t o nhóm đ n gi n nh t ngơn ng l p trình m ng (array) M ng m t dãy có ki u xác đ nh • Ví d : Khai báo PASCAL (C) sau PASCAL C name: array[1 10] of integer; int name[10] khai báo bi n name g m 10 ph n t ki u c s nguyên (integer) • Có th truy xu t đ n ph n t c a m ng nh ch tên m ng v i ch s c a • Ta s xét k h n ki u m ng m c ti p theo CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-13 C u trúc d li u (Data Structures) • • • • M t ph ng pháp chung n a hay dùng đ nhóm c u trúc b n ghi (record structure) B n ghi (record) ô đ c t o b i m t h ô (g i tr ng) có th có ki u r t khác Các b n ghi l i th ng đ c nhóm l i thành m ng; ki u đ c xác đ nh b i vi c nhóm tr ng c a b n ghi tr thành ki u c a ph n t c a m ng Ví d : Trong PASCAL/C mơ t PASCAL C var reclist: array[1 100] of record data: real; next: integer; end; struct record { float data; int next; } reclist[100]; khai báo reclist m ng 100 ph n t , m i ô m t b n ghi g m tr ng: data next CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-14 C u trúc d li u (Data Structures) • Ph ng pháp th ba đ nhóm file File, c ng gi ng nh m ng m t chi u, m t dãy giá tr ki u • Tuy nhiên, ph n t file ch có th truy xu t đ c m t cách tu n t , theo th t mà chúng xu t hi n file • Trái l i, m ng b n ghi c u trúc tr c truy ("random-access"), ngh a th i gian đ truy xu t đ n thành ph n c a m ng (hay b n ghi) không ph thu c vào ch s m ng (hay tr ng đ c l a ch n) • Bên c nh c n nh n m nh m t u m c a ki u file s ph n t c a khơng b gi i h n! CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-15 C u trúc d li u (Data Structures) • Khi l a ch n c u trúc d li u cài đ t ADT m t v n đ c n đ c quan tâm th i gian th c hi n phép toán đ i v i ADT s nh th B i vì, cách cài đ t khác có th d n đ n th i gian th c hi n phép tốn khác • Ví d : Xét cài đ t ADT t n (Dictionary ADT) • ADT t n bao g m: C n l u tr t p c p , đ tìm ki m value theo key M i key có khơng q m t value Các phép tốn c b n: • insert(k,v) : chèn c p (k,v) vào t n • find(k): N u (k,v) có t n tr l i v, trái l i tr v 0; • remove(k) : Xố b c p (k,v) t n CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-16 C u trúc d li u (Data Structures) • Xét ba ph ng pháp cài đ t t n: Danh sách móc n i (Linked list); M ng s p x p (Sorted array); Cây tìm ki m (Search tree) • B ng d i cho đánh giá th i gian c a vi c th c hi n phép toán: Cài đ t Insert Find Remove Linked List O(n) O(n) O(n) Sorted Array O(n) O(log n) O(n) Search Tree O(log n) O(log n) O(log n) CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-17 Con tr (Pointer) • M t nh ng u th c a ph ng pháp nhóm ô NNLT ta có th bi u di n m i quan h gi a ô nh s d ng tr • nh ngh a Con tr (pointer) ô mà giá tr c a ch m t khác • Khi v c u trúc d li u, đ th hi n ô A tr đ n ô B, ta s s d ng m i tên h ng t A đ n B A • B Ví d : t o bi n tr ptr đ tr đ n có ki u cho tr h n celltype, ta có th khai báo: Trong PASCAL Trong C var celltype *ptr c, ch ng ptr: ^celltype; CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-18 Phân lo i c u trúc d li u • Trong nhi u tài li u v CTDL th phân lo i c u trúc d li u sau đây: ng s d ng C u trúc d li u c s (Base data structures) Ví d : Pascal: integer, char, real, boolean, ; C: int, char, float, double, C u trúc d li u n tính (Linear data structures) Ví d : M ng (Array), Danh sách liên k t (Linked list), Ng n x p (Stack), Hàng đ i (Queue), C u trúc d li u phi n (Nonlinear data structures) Ví d : Cây (trees), đ th (graphs), b ng b m (hash tables), CTDL & TT – NGUY N Ch C NGH A – B môn KHMT – HBK Hà n i Chap03-19 ng Các c u trúc d li u c b n 3.1 Các khái ni m 3.2 M ng 3.3 Danh sách 3.4 Ng n x p 3.5 Hàng đ i CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-20 n = 0, x = module power(x, n) tmp = { create a Stack initialize a Stack loop{ if (n == 0) then {exit loop} push n onto Stack n = n/2 } tmp = loop { if (Stack is empty) then {return tmp} pop n off Stack if (n is even) {tmp = tmp*tmp} else {tmp = tmp*tmp*x} } tmp } n x Stack Runtime stack n = 0, x = module power(x, n) { tmp = 32 create a Stack initialize a Stack loop{ if (n == 0) then {exit loop} push n onto Stack n = n/2 } tmp = loop { if (Stack is empty) then {return tmp} pop n off Stack if (n is even) {tmp = tmp*tmp} else {tmp = tmp*tmp*x} } } tmp n x Stack 32 Runtime stack Cài đ t không đ qui s d ng stack double power(double x, int n) { double tmp = 1; Stack theStack; initializeStack(&theStack); while (n != 0) { push(&theStack, n); n /= 2; } Cách mô t g nv iCh n! while (!stackEmpty(&theStack)) { n = pop(&theStack); if (n % == 0) { tmp = tmp*tmp;} else { tmp = tmp*tmp*x;} } return tmp; } 233 Ch ng Các c u trúc d li u c b n 3.1 Các khái ni m 3.2 M ng 3.3 Danh sách 3.4 Ng n x p 3.5 Hàng đ i CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-234 3.5 Hàng đ i 3.5.1 Ki u d li u tr u t ng hàng đ i 3.5.2 Cài đ t hàng đ i b ng m ng 3.5.3 Cài đ t hàng đ i b i danh sách móc n i 3.5.4 M t s ví d ng d ng hàng đ i ng d ng Chuy n đ i xâu ch s thành s th p phân ng d ng Nh n bi t Palindromes CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap03-235 ADT hàng đ i (ADT queues) • Hàng đ i danh sách có th t phép tốn chèn ln th c hi n ch m t phía g i phía sau hay cu i (back or rear), cịn phép tốn xố ch th c hi n phía cịn l i g i phía tr c hay đ u (front or head) • Thu t ng th ng dùng cho hai thao tác chèn xoá đ i v i hàng đ i t ng ng đ a vào (enqueue) đ a (dequeue) • Các ph n t đ c l y kh i hàng đ i theo qui t c Vào tr c - Ra tr c Vì th hàng đ i cịn đ c g i danh sách vào tr c tr c (First-In-First-Out (FIFO) list) CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02-236 ADT hàng đ i (ADT queues) • Các thu t ng liên quan đ n hàng đ i đ hình v sau đây: B sung/ a vào Add/ Enqueue Phía sau/Cu i Back/Rear c mơ t Phía tr c/ Front/Head u • Hàng đ i có tính ch t nh hàng đ i ch đ v th c t CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Using a Queue Lo i b / a (Remove/ Dequeue) c ph c Chap02-237 Queues Everywhere! Các phép tốn • Q = init(); Kh i t o Q hàng đ i r ng • isEmpty(Q); Tr l i "true" ch hàng đ i Q r ng • isFull(Q); Tr l i "true" ch hàng đ i Q tràn, cho bi t ta s d ng v t kích th c t i đa dành cho hàng đ i • front(Q); Tr l i ph n t n u hàng đ i r ng • enqueue(Q,x); Chèn ph n t x vào phía sau (back) hàng đ i Q N u vi c chèn d n đ n tràn hàng đ i c n thơng báo v u • dequeue(Q,x); Xố ph n t phía tr c hàng đ i, tr l i x thông tin ch a ph n t N u hàng đ i r ng c n đ a thơng báo l i • print(Q); a danh sách t t c ph n t c a hàng đ i Q theo th t t phía tr c đ n phía sau • size(Q); Tr l i s l CTDL & TT – NGUY N phía tr c (front) c a hàng đ i Q ho c g p l i ng ph n t hàng đ i Q C NGH A – B môn KHMT – HBK Hà n i Ví d Operation enqueue(5) enqueue(3) dequeue() enqueue(7) dequeue() front() dequeue() dequeue() isEmpty() size() enqueue(9) enqueue(7) enqueue(3) enqueue(5) dequeue() Output – – – 7 “ er r or ” tr ue – – – – Q (5) (5, 3) (3) (3, 7) (7) (7) () () () () (9) (9, 7) (9, 7, 3) (9, 7, 3, 5) (7, 3, 5) 241 CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Queues CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i 242 ng d ng c a hàng đ i • ng d ng tr c ti p Danh sách x p hàng ch mua vé tàu xe, ch g i xe, ch đ ph c v hàng n, ch m n sách th vi n, Chia s tài nguyên (ví d , printer, CPU, b nh , ) T ch c th c hi n đa ch ng trình (Multiprogramming) • c ng d ng gián ti p (Indirect applications) C u trúc d li u b tr cho thu t toán Là thành ph n c a nh ng c u trúc d li u khác CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i 3.5 Hàng đ i 3.5.1 Ki u d li u tr u t ng hàng đ i 3.5.2 Cài đ t hàng đ i b ng m ng 3.5.3 Cài đ t hàng đ i b i danh sách móc n i 3.5.4 M t s ví d ng d ng hàng đ i ng d ng Chuy n đ i xâu ch s thành s th p phân ng d ng Nh n bi t Palindromes CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap03-244 Cài đ t hàng đ i b ng m ng Array based Queue Array • S d ng m ng Q kích th c N theo th t vịng trịn • Có hai bi n đ l u tr v trí đ u cu i (front and rear) f ch s c a ph n t đ u hàng đ i r ch s c a v trí sau v trí c a ph n t cu i c a hàng đ i • V trí r đ c gi r ng c u hình bình th ng Q f r c u hình xoay vịng trịn Q r f Các phép tốn • Ta s d ng phép toán theo modulo (ph n d c a phép chia) Algorithm size() return (N f + r) mod N Algorithm isEmpty() return (f = r) Q f r r Q CTDL & TT – NGUY N f C NGH A – B môn KHMT – HBK Hà n i a vào (enqueue) Phép tốn chèn • Phép tốn enqueue ph i đ ý đ n l i tràn hàng đ i • L i c n x lý b i ng i s d ng Algorithm enqueue(o) if size() = N then Error("FullQueue") else Q[r] o r (r + 1) mod N Q f r r Q CTDL & TT – NGUY N f C NGH A – B mơn KHMT – HBK Hà n i Phép tốn lo i b • Phép tốn lo i b (dequeue) c n x lý l i hàng đ i r ng a (dequeue) Algorithm dequeue() if isEmpty() then Error("EmptyQueue") else o Q[f] f (f + 1) mod N return o Q f r r Q f Demo: d:\ \0DEMOCODE\QueueArray.c CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i 3.5 Hàng đ i 3.5.1 Ki u d li u tr u t ng hàng đ i 3.5.2 Cài đ t hàng đ i b ng m ng 3.5.3 Cài đ t hàng đ i b i danh sách móc n i 3.5.4 M t s ví d ng d ng hàng đ i ng d ng Chuy n đ i xâu ch s thành s th p phân ng d ng Nh n bi t Palindromes CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap03-249 Cài đ t hàng đ i b i danh sách móc n i • Ta có th cài đ t hàng đ i b i danh sách móc n i đ n ho c đơi • Ví d : khai báo sau đ c s d ng đ mô t hàng đ i b i danh sách móc n i đ n: typedef struct _node { DataType element; struct _node *next; } node; typedef struct { node *front; node *back; } queue; DataType ki u d li u c a đ i t ng c n l u gi , đ c khai báo tr c • Các phép tốn đ i v i hàng đ i mô t b i danh sách móc n i đ c cài đ t t ng t nh đ i v i danh sách móc n i trình bày Ta s khơng trình bày l i chi ti t CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap03-250 3.5 Hàng đ i 3.5.1 Ki u d li u tr u t ng hàng đ i 3.5.2 Cài đ t hàng đ i b ng m ng 3.5.3 Cài đ t hàng đ i b i danh sách móc n i 3.5.4 M t s ví d ng d ng hàng đ i ng d ng Chuy n đ i xâu ch s thành s th p phân ng d ng Nh n bi t Palindromes CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap03-251 Ví d : Chuy n đ i xâu ch s thành s th p phân Thu t tốn đ c mơ t s đ sau: // Chuy n dãy ch s Q thành s th p phân n // Lo i b d u cách đ u (n u có) { dequeue(Q, ch) } until ( ch != blank) // ch ch a ch s đ u tiên // Tính n t dãy ch s hàng đ i n = 0; done = false; { n = 10 * n + s nguyên mà ch bi u di n if (! isEmpty(Q) ) dequeue(Q,ch) else done = true } until ( done || ch != digit) // K t qu : n ch a s c n tìm CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap03-252 Ví d : Nh n bi t Palindromes • nh ngh a Ta g i palindrome xâu mà đ c t trái qua ph i c ng gi ng nh đ c t ph i qua trái • Ví d : NOON, DEED, RADAR, MADAM ABLE WAS I ERE I SAW ELBA • M t nh ng cách nh n bi t m t xâu cho tr c có ph i palindrome hay không ta đ a ký t c a đ ng th i vào m t hàng đ i m t ng n x p Sau l n l t lo i b ký t kh i hàng đ i ng n x p ti n hành so sánh: N u phát hi n s khác gi a hai ký t , m t ký t đ c l y t ng n x p ký t l y t hàng đ i, xâu xét không palindrome N u t t c c p ký t l y trùng xâu xét palindrome CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i 253 Ví d minh ho thu t toán: "RADAR" B c 1: a “RADAR” vào Queue Stack: Ký t hi n th i R Queue (cu i bên ph i) R Stack (top bên trái) R A RA AR D RAD DAR A RADA ADAR R RADAR RADAR CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i 254 Nh n bi t "RADAR" có ph i palindrome B c 2: Xoá b “RADAR” kh i Queue Stack: Queue (head bên trái) head c a Queue top c a Stack Stack (top bên trái) RADAR ADAR DAR R A D R A D RADAR ADAR DAR AR R A R A R AR R empty empty empty empty K t lu n: Xâu "RADAR" palindrome 255 H t ch CTDL & TT – NGUY N ng C NGH A – B môn KHMT – HBK Hà n i Chap02-256 CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Ki u d li u tr u t Chap03-257 ng (Abstract Data Types) • • • • • • • • M t nguyên lý c b n c a công ngh ph n m m là: Tách giao di n (cái mà b n có th làm) kh i cài đ t (cái đ c th c hi n b ng cách nào) (Separate the interface (what you can do) from the implementation (how it is done)) Ki u d li u tr u t ng (Abstract Data Type -ADT) nh giao di n c a c m t h d li u An array is probably the most versatile or fundamental Abstract Data Type, left until now simply to show it was reasonable to consider others An array is a finite sequence of storage cells, for which the following operations are defined: create(A,N) creates an array A with storage for N items; A[i]=item stores item in the i th position in the array A; and A[i] returns the value of the item stored in the i th position in the array A CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i 258 3.4 Ng n x p (Stacks) 3.4 Introduction Consider the problems on pp 170-1 (1) Model the discard pile in a card game (2) Model a railroad switching yard (3) Parentheses checker (4) Calculate and display base-two representation 26 = ???????2 ... 16 -32 768 32 767 char 16 65 535 int 32 -21474 836 48 = - 231 21474 836 47 = 231 -1 long 64 -92 233 72 036 854775808 92 233 72 036 854775807 float 32 1.40 10 45 3. 40 1 038 double 64 4.94 10? ?32 4... u trúc d li u c b n 3. 1 Các khái ni m 3. 2 M ng 3. 3 Danh sách 3. 4 Ng n x p 3. 5 Hàng đ i CTDL & TT – NGUY N C NGH A – B môn KHMT – HBK Hà n i Chap02 -38 3. 3 Danh sách 3. 3.1 Danh sách n tính 3. 3.2... 93 3 .3 Danh sách 3. 3.1 Danh sách n tính 3. 3.2 Cài đ t danh sách n tính Bi u di n d i d ng m ng Danh sách móc n i Danh sách n i đơi 3. 3 .3 Các ví d ng d ng 3. 3.4 Phân tích s d ng linked list 3. 3.5