Ôn tập loại cấutrúcliệuCấutrúcliệu kiểu mảng (ARRAY) Khỏi nim Phng phỏp lu tr Mảng tập hợp có thứ tự bao gồm số lợng cố định phần tử,đc truy cập với tên Có hai phơng pháp lu trữ mảng hai chiều: 1, Lu trữ theo dòng (nh BASIC, PASCAL) Trong cấutrúc lu trữ theo dòng trớc hết ngời ta lần lợt lu trữ thành phần dòng thứ , tiếp thành phần dòng thứ hai, dòng thứ vv dòng cuối Cấutrúcliệu danh sách (LIST) Cấutrúcliệu kiểu STACK Danh sách tập hợp gồm nhiều phần tử có tính chất cấutrúc thứ tự phần tử với : biết đợc phần tử trớc biết đợc vị trí phần tử đứng sau Ngời ta thờng biểu diễn danh sách thành dãy phần tử đợc phân cách dấu phảy Stack kiểu danh sách tuyến tính đặc biệt mà việc bổ sung hay loại phần tử thực đầu gọi đỉnh (Top) Các phần tử danh sách đợc xếp thø tù tun tÝnh theo vÞ trÝ cđa chóng danh sách Ta nói , Lu trữ Stack mảng.Vì Stack dãy mục liệu dùng mảng để lu trữ mục Mỗi phần tử ngăn xếp chiếm vị trí mảng vị trí thứ phần tử đứng trớc phần tử ai+1 (i =1,2,3, n-1) Ta Danh sách kiểu hàng đợi (QUEUE) Queue kiểu danh sách tuyến tính mà phép bổ sung phần tử đợc thực đầu gọi lối sau (Rear) phép loại bỏ phần tử thực đầu khác gọi lối trớc (Front) Queue đợc gọi danh sách kiểu FIFO (First In First Out) Phơng pháp tuyến tính Trong trờng hợp Queue đợc lu trữ véc tơ lu trữ Q có n phần tử Để có thĨ truy nhËp vµo Queue ta dïng hai biÕn trá: BiÕn R trá vµo lèi sau cđa queue BiÕn F trỏ vào lối trớc queue Nếu queue rỗng R = nói phần Cỏc gii thuật 2, Lu tr÷ theo cét ( nh FORTRAN ) Đối với trờng hợp lu trữ theo cột, phần tử mảng đợc lu trữ liên tiếp cột thứ sau sang cét thø hai, cét thø ba vvv cho ®Õn hÕt cét ci cïng cđa m¶ng tư cã vị trí thứ i cấutrúc danh sách Mảng chiều Giải thuật tạo lập mảng chiều Giải thuật xếp mảng chiều Giải thuật tìm kiếm mảng chiều Giải thuật tính toán Tìm kiếm Bổ sung Loại bỏ Thay phần tử Tách danh sách thành nhiều danh sách Ghép nhiều danh phục vụ nh đỉnh Stack.Giả sử ta muốn lu trữ Stack véc tơ lu trữ S(n) gồm n phần tử Gọi Top địa phần tử đỉnh Stack, Top biến động Khi Stack rỗng ta qui ớc Top=0; Stack bị "tràn" (overflow) Top = n Giả sử phần tư cđa stack chiÕm mét tõ m¸y Khi bỉ sung phần tử Top: = Top+1, loại bỏ phần tử Top: = Top - & F=0 Giả sử phần tử queue chứa từ máy bổ xung thêm phần tử R: = R + Còn loại phần tử F: = F + Lu trữ Queue danh sách nối vòng Giải thuật Loại bỏ phần tử khỏi stack Giải thuật xác định Stack rỗng Giải thuật Bổ sung Giải thuật tạo lập Stack Giải thuật tạo lập Queue Giải thuật kiểm tra Queue rỗng Giải thuật chèn vào Queue Giải thuật loại khỏi Queue Queue đợc lu trữ véc tơ lu trữ Q có n phần tử, F R hai trá, trá vµo lèi tríc vµ lèi sau Để cài đặt hàng đợi dùng ghi gồm mảng nối vòng để chứa phần tử hàng đợi trờng Front Rear để ghi lại vị trí phần tử đầu vị trí sau phần tử cuối m¶ng mét chiỊu M¶ng hai chiỊu ( Ma trËn) Gi¶i thuật tạo lập mảng hai chiều Giải thuật tìm kiếm Giải thuật nhân mảng hai chiều với véctơ Giải thuật cộng mảng hai chiều Giải thuật nhân mảng hai chiều với mảng hai chiều sách thành danh sách Trộn nhiều danh sách thành danh sách Sắp xếp thứ tự danh sách Cấutrúcliệu danh sách liên kết Danh sách liên kết loại cấutrúcliệu đơn giản thích hợp với phép toán thêm , loại bỏ , ghép, tách so với danh sách đặc Danh sách liên kết thích hợp cho phép toán bổ sung , loại bỏ phần tử Chúng đợc nối với nhờ vào vùng liên kết : vùng liên kết phần tử thứ chứa địa phần tử thứ hai , vùng liên kết phần tử thứ hai chứa địa phần tử thứ ba nh đến phần tử cuối Vùng liên kết phần tử cuối Nil Danh sách liên kết cấutrúcliệu có sẵn đa số ngôn ngữ lập trình Vì phải cài đặt danh sách liên kết cách dùng cấutrúcliệu khác Danh sách liên kết đơn Khái niệm Danh sách liên kết đơn danh sách mà phần tử có vùng liên kết Có loại danh sách liên kết đơn danh sách sở mảng sở biến trỏ Danh sách liên kết đối xứng Danh sách liên kết đối xứng danh sách mà phần tử có hai vùng liên kết Phơng pháp lu trữ Để lu trữ danh sách loại này, phần tử đợc lu trữ nút (node) Mỗi nút bao gồm số từ máy liên tiếp nhau, nhng thân nút nằm rải rác nhớ Cấutrúc nút gồm hai phần : Phần liệu Data Phần liên kết phần tử đứng sau Nút cuối kết thúc danh sách móc nối ký hiệu Nil Trong nút phần Data cã hai trá: mét trá ®Õn nót ®øng tríc trỏ đến nút đứng sau Lptr Dat a Các giải thuật Nex t DSLK sở mảng DSLK sở biến trỏ CÊu tróc lu tr÷: Trêng d÷ liƯu lu tr÷ mét phần tử danh sách, trờng liên kết đến phần tử đứng sau cách lu trữ số mảng Ngoài ,một biến List đến phần tử cách lu trữ số mảng Cấutrúc lu trữ: Trờng Data có kiểu thích hợp để lu trữ phần tử danh sách , trờng Next chứa liên kết đến phần tử đứng sau Tuy nhiên , khác với cách cài đặt sở mảng, liên kết trỏ số mảng Tạo lập Kiểm tra danh sách liên kết rỗng Chèn item vào đầu danh sách Khởi động vùng nút tự danh sách Trả lại trỏtrong danh sách Quét danh sách liên kết lu trữ mảng Chèn thêm nút vào danh sách liên kết lu trữ mảng Xoá nút từ danh sách liên kết lu trữ mảng Giải thuật tạo lập Giải thuật Kiểm tra danh sách rỗng Giải thuật thêm item vào đầu danh sách Giải thuật duyệt qua danh sách Giải thuật bổ sung nút vào danh sách Giải thuật loại bỏ phần tử Giải thuật ghép nối hai danh sách Giải thuật tách danh sách Data Rptr Lptr nút cực trái Rptr nút cực phải Nil Ta dùng hai trỏ L R để truy nhập vào danh sách theo hai chiều, L trỏ tới nút cực trái R trỏ vào nút cực phải Khi danh sách rỗng ta qui íc L = Nil & R = Nil Giải thuật bổ sung phần tử Giải thuật loại bỏ phần tử Giải thuật ghép danh sách liên kết đối xứng Giải thuật tách danh sách liên kết đối xứng Ngoài ra, danh sách liên kết có cấutrúcliệu kiểu Stack Queue liên kết Trong giáo trình loại cấutrúc liên kết Cây Đồ thị ... Trộn nhiều danh sách thành danh sách Sắp xếp thứ tự danh sách Cấu trúc liệu danh sách liên kết Danh sách liên kết loại cấu trúc liệu đơn giản thích hợp với phép toán thêm , loại bỏ , ghép, tách... liên kết phần tử cuối Nil Danh sách liên kết cấu trúc liệu có sẵn đa số ngôn ngữ lập trình Vì phải cài đặt danh sách liên kết cách dùng cấu trúc liệu khác Danh sách liên kết đơn Khái niệm Danh... sở biến trỏ Cấu trúc lu trữ: Trờng liệu lu trữ phần tử danh sách, trờng liên kết đến phần tử đứng sau cách lu trữ số mảng Ngoài ,một biến List đến phần tử cách lu trữ số mảng Cấu trúc lu trữ: