Cài đt danh sách liên ơ

Một phần của tài liệu Tổng quan về một số thuật toán tìm kiếm sắp xếp và danh sách liên kết đơn (Trang 28 - 31)

C. Mở rộn g: Danh sách liên kết đơn

3, Cài đt danh sách liên ơ

Trước khi cài đ t danh sách liên k t đ n, đi u c n thi t là chúng ta ph i n m v ng ặ ế ơ ề ầ ế ả ắ ữ ph n c p phát đ ng ( memory allocation ) và con tr ( pointer ) trong ngôn ng C/C++.ầ ấ ộ ỏ ữ Do danh sách liên k t đ n là m t c u trúc d li u đ ng, thao tác v i ph n c ng máy ế ơ ộ ấ ữ ệ ộ ớ ầ ứ tính nhi u h n nên n u không ch c các ki n th c trên thì có th s r t khó hi u v i bàiề ơ ế ắ ế ứ ể ẽ ấ ể ớ vi t này. Trong ph n này, chúng ta s th c hành v i ngôn ng C.ế ầ ẽ ự ớ ữ

3.1, T o c u trúc Nodeạ

Nh đã đ c p trên, m t Node s ch a 1 thành ph n giá tr và m t thành ph n liên ư ề ậ ở ộ ẽ ứ ầ ị ộ ầ k t. đây, tôi s d ng giá tr là m t ki u s nguyên và m t con tr ( thành ph n liên ế Ở ử ụ ị ộ ể ố ộ ỏ ầ

k t ) có ki u Node. T i sao l i v y ? B i con tr đó s ch a m t giá tr là đ a ch c a ế ể ạ ạ ậ ở ỏ ẽ ứ ộ ị ị ỉ ủ m t Node ti p theo nên nó cũng ph i có ki u Node. Hình nh dộ ế ả ể ả ưới là đo n code c u ạ ấ t o m t Node :ạ ộ

Đ d hi u h n, thì chúng ta có th nhìn hình v dể ễ ể ơ ể ẽ ưới đây:

đ u, chúng ta có 1 Node mang thành ph n giá tr ki u s nguyên là 5, ti p đó là con

Ở ầ ầ ị ể ố ế

tr ch a đ a ch c a Node ti p theo. Đ a ch luôn luôn có d ng th p l c phân nên con ỏ ứ ị ỉ ủ ế ị ỉ ạ ậ ụ tr Node đ u tiên s ch a đ a ch c a con tr ti p theo là “D95AF” và có thành ph n ỏ ở ầ ẽ ứ ị ỉ ủ ỏ ế ầ cùng ki u nguyên có giá tr là 89. Do Node ch a giá tr 89 đ ng cu i nên con tr ể ị ứ ị ứ ở ố ỏ trong nó s ch t i NULL, còn nh ch ?ẽ ỉ ớ ớ ứ

3.2, T o c u trúc danh sách liên k t đ nạ ế ơ

Sau khi có được c u trúc m t Node, ti p theo chúng ta c n qu n lý chúng b ng ph n tấ ộ ế ầ ả ằ ầ ử đ u và ph n t cu i. Vì m i ph n t đ u liên k t v i ph n t k ti p nên chúng ta c n ầ ầ ử ố ỗ ầ ử ề ế ớ ầ ử ế ế ầ bi t đ u và cu i đ qu n lý chúng. Các ph n t đ u và cu i s đế ầ ố ể ả ầ ử ầ ố ẽ ược qu n lý b ng m t ả ằ ộ

con tr l u tr giá tr đ a ch c a chúng. Nh con tr đ u thì l u đ a ch c a ph n t ỏ ư ữ ị ị ỉ ủ ư ỏ ầ ư ị ỉ ủ ầ ừ đ u ( * pHead ) và con tr ti p theo thì l u đ a ch v trí c a ph n t cu i ( * pTail )ầ ỏ ế ư ị ỉ ị ủ ầ ử ố

Đ d hi u h n, chúng ta ti p t c v i hình nh ví d nh ph n trên :ể ễ ể ơ ế ụ ớ ả ụ ư ầ

V y, con tr pHead s ch a đ a ch Node đ u là “D60AX” và pTail là “D95AF”. ậ ỏ ẽ ứ ị ỉ ầ Nh ng, đ i v i m t danh sách ch a ch a Node nào thì chúng ch a gì ? Đ n gi n là ư ố ớ ộ ư ứ ứ ơ ả chúng cũng ch a Null nh Node cu i vì cũng ch ng có gì đ tr đ n c . Dứ ư ở ố ẳ ể ỏ ế ả ưới đây là ph n code :ầ

3.3, T o 1 Nodeạ

Đ t o m t node m i, ta th c hi n c p phát đ ng cho node m i, kh i t o giá tr ban ể ạ ộ ớ ự ệ ấ ộ ớ ở ạ ị đ u và tr v đ a ch c a node m i đầ ả ề ị ỉ ủ ớ ược c p phát. Ta ph i truy n m t giá tr tùy thu c ấ ả ề ộ ị ộ

vào bài toán chúng ta g p. đây, ta s truy n m t giá tr nguyên ( int x ). Ti p đ n là ặ Ở ẽ ề ộ ị ế ế c p phát b nh đ ng cho Node, th dùng hàm sizeof(NODE), ta đấ ộ ớ ộ ử ược k t qu là 16 ế ả byte cho 1 Node ( g m 1 s nguyên và m t con tr ). Cu i cùng hàm s tr v đ a ch ồ ố ộ ỏ ố ẽ ả ề ị ỉ c a Node và ta có th gi i quy t các bài toán v sau.ủ ể ả ế ề

Một phần của tài liệu Tổng quan về một số thuật toán tìm kiếm sắp xếp và danh sách liên kết đơn (Trang 28 - 31)