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

Một phần của tài liệu (TIỂU LUẬN) mở RỘNG THUẬT TOÁN tìm KIẾM, sắp xếp BẰNG NGÔN NGỮ PYTHON (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 ) 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 ln ln 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 ầ ầ ử ố ỗ ầ ử ề ế ớ ầ ử ế ế ầ

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 ể ạ ộ ớ ự ệ ấ ộ ớ ở ạ ị

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 (TIỂU LUẬN) mở RỘNG THUẬT TOÁN tìm KIẾM, sắp xếp BẰNG NGÔN NGỮ PYTHON (Trang 28 - 31)

Tải bản đầy đủ (PDF)

(41 trang)