1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Cấu trúc dữ liệu

5 92 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 51 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ôn tập các loại cấu trúc dữ liệu Cấu trúc dữ liệu kiểu mảng ARRAY Cấu trúc dữ liệu danh sách LIST Cấu trúc dữ liệu kiểu STACK Danh sách kiểu hàng đợi QUEUE Khỏi niệm Mảng là một tập hợp

Trang 1

Ôn tập các loại cấu trúc dữ liệu

Cấu trúc dữ liệu kiểu mảng (ARRAY) Cấu trúc dữ liệu danh

sách (LIST)

Cấu trúc dữ

liệu kiểu STACK

Danh sách kiểu hàng đợi (QUEUE)

Khỏi

niệm

Mảng là một tập hợp có thứ tự

bao gồm một số lợng cố định

các phần tử,được truy cập với

cùng một tên

Danh sách là một tập hợp gồm nhiều phần

tử có tính chất cấu trúc thứ tự giữa các phần tử với nhau : nếu biết đợc phần tử trớc thì sẽ biết đợc

vị trí của phần tử

đứng sau

Ngời ta thờng biểu diễn danh sách thành một dãy các phần tử

đợc phân cách nhau bởi dấu phảy

Stack là một kiểu danh sách tuyến tính đặc biệt mà việc bổ sung hay loại một phần tử chỉ thực hiện ở một

đầu gọi là đỉnh (Top)

Queue là kiểu danh sách tuyến tính mà phép bổ sung một phần tử đợc thực hiện ở một đầu gọi là lối sau (Rear) còn phép loại bỏ một phần tử thực hiện ở một đầu khác gọi

là lối trớc (Front) Queue còn đợc gọi là danh sách kiểu FIFO (First In First Out)

Phương

phỏp

lưu trữ

Có hai phơng pháp lu trữ

mảng hai chiều:

1, Lu trữ theo dòng (nh

trong BASIC, PASCAL)

Trong cấu trúc lu trữ theo

dòng trớc hết ngời ta lần lợt

l-u trữ các thành phần của

dòng thứ nhất , tiếp đó là

các thành phần của dòng thứ

hai, dòng thứ 3 vv cho đến

dòng cuối cùng

Các phần tử của danh sách có thể

đợc sắp xếp thứ tự tuyến tính theo vị trí của chúng trong danh sách Ta nói , phần tử ai đứng trớc phần tử ai+1 (i =1,2,3, n-1) Ta

Lu trữ Stack kế tiếp bằng một mảng.Vì

Stack là một dãy các mục dữ liệu chúng

ta có thể dùng mảng

để lu trữ các mục này Mỗi phần tử của ngăn xếp chiếm một vị trí trong mảng và vị trí thứ

Phơng pháp tuyến tính

Trong trờng hợp này Queue

đợc lu trữ trong một 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 con trỏ:

Biến R trỏ vào lối sau của queue

Biến F trỏ vào lối trớc của queue

Nếu queue rỗng thì R = 0

Trang 2

2, Lu trữ theo cột ( nh

trong FORTRAN )

Đối với trờng hợp lu trữ theo

cột, các phần tử của mảng sẽ

đợc lu trữ liên tiếp bắt đầu

từ cột thứ nhất sau đó sang

cột thứ hai, cột thứ ba vvv

cho đến hết cột cuối cùng

của mảng

cũng nói rằng phần

tử ai có vị trí thứ i trong cấu trúc của danh sách

nhất phục vụ nh là

đỉnh của Stack.Giả

sử ta muốn lu trữ

Stack bằng véc tơ

l-u trữ S(n) gồm n phần tử Gọi Top là

địa chỉ phần tử

đỉnh của Stack, Top là một biến

động Khi Stack rỗng ta qui ớc Top=0; khi Stack bị

"tràn" (overflow) thì

Top = n Giả sử mỗi phần tử của stack chiếm một từ máy

Khi bổ sung một phần tử thì Top: = Top+1, khi loại bỏ một phần tử thì

Top: = Top - 1

& F=0

Giả sử mỗi phần tử của queue chứa trong 1 từ máy thì khi bổ xung thêm một phần tử R: = R + 1

Còn khi loại một phần tử thì F: = F + 1

Lu trữ Queue bằng danh sách nối vòng

Queue đợc lu trữ bởi véc tơ

lu trữ Q có n phần tử, F và

R là hai con trỏ, trỏ vào lối trớc và lối sau của nó

Để cài đặt một hàng đợi chúng ta dùng một bản ghi gồm một mảng nối vòng để chứa các phần tử của hàng

đợi và các trờng Front và Rear để ghi lại vị trí của phần tử đầu và vị trí sau phần tử cuối cùng

Cỏc giải

thuật cơ

bản

Mảng một chiều

Giải thuật tạo lập mảng một

chiều.

Giải thuật sắp xếp mảng

một chiều

Giải thuật tìm kiếm trong

mảng một chiều

Giải thuật tính toán trong

Tìm kiếm

Bổ sung Loại bỏ Thay thế phần tử Tách một danh sách

thành nhiều danh sách Ghép nhiều danh

Giải thuật Loại bỏ một 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

Trang 3

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 một 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 một danh sách Trộn nhiều danh

sách thành một danh sách mới Sắp xếp thứ tự một

danh sách

Cấu trúc dữ liệu danh sách liên kết

Danh sách liên kết là một loại cấu trúc dữ liệu đơn giản và thích hợp hơn với các 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 rất thích hợp cho các phép toán bổ sung , loại bỏ phần tử

Chúng đợc nối với nhau nhờ vào vùng liên kết : vùng liên kết của phần tử thứ nhất chứa địa chỉ của phần tử thứ hai , vùng liên kết của phần tử thứ hai chứa địa chỉ của phần tử thứ ba và cứ nh thế đến phần tử cuối cùng Vùng liên kết của phần tử cuối cùng là Nil

Danh sách liên kết không phải là cấu trúc dữ liệu có sẵn trong đa số các ngôn ngữ lập trình Vì vậy phải cài đặt danh sách liên kết bằng cách dùng các cấu trúc dữ liệu khác

kết đối xứng Khái

niệm

Danh sách liên kết đơn là một danh sách mà các phần tử của nó có 1 vùng liên kết

Có 2 loại danh sách liên kết đơn là danh sách trên cơ sở mảng và trên cơ

sở biến con trỏ

Danh sách liên kết đối xứng là một danh sách mà các phần tử của nó có hai vùng liên kết

Trang 4

Ph-ơng

pháp

lu trữ

Để lu trữ danh sách loại này, mỗi phần tử của nó sẽ đợc lu trữ trong một nút (node) Mỗi nút bao gồm một số từ máy liên tiếp nhau, nhng bản thân các nút thì có thể nằm rải rác trong bộ nhớ.

Cấu trúc mỗi nút gồm hai phần : Phần dữ liệu Data và Phần liên kết chỉ phần tử đứng sau nó

Nút cuối cùng kết thúc danh sách móc nối và ký hiệu là 0 hoặc Nil

Dat a

Nex t

Trong mỗi nút ngoài phần Data còn có hai con trỏ: một trỏ đến nút đứng

tr-ớc nó và một trỏ đến nút

đứng sau

Lptr Data Rptr Lptr của nút cực trái và Rptr của nút cực phải là Nil Ta dùng hai con trỏ L

và R để truy nhập vào danh sách theo cả hai chiều, L trỏ tới nút cực trái

và R trỏ vào nút cực phải Khi danh sách rỗng ta qui

-ớc L = Nil & R = Nil

DSLK trên cơ sở mảng DSLK trên cơ sở biến con

trỏ

Cấu trúc l u trữ: Trờng dữ liệu

l-u trữ một phần tử của danh sách, còn trờng liên kết sẽ chỉ đến phần tử đứng sau nó bằng cách

lu trữ chỉ số của nó trong mảng

Ngoài ra ,một biến List sẽ chỉ

đến phần tử đầu tiên bằng cách

lu trữ chỉ số của nó trong mảng

Cấu trúc l u trữ: Trờng Data có kiểu

thích hợp để lu trữ một phần tử của danh sách , còn trờng Next sẽ chứa một liên kết chỉ đến phần tử đứng sau

Tuy nhiên , khác với cách cài đặt trên cơ sở mảng, liên kết này sẽ là con trỏ chứ không phải là chỉ số trong mảng

Các

giải

thuật

bản

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 các nút tự do trong danh sách

Trả lại con trỏtrong danh sách Quét danh sách liên kết lu trữ

bằng mảng Chèn thêm nút mới vào danh sách liên kết lu trữ bằng mảng

Xoá một nút từ danh sách liên kết

lu trữ bằng 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 một danh sách Giải thuật bổ sung một nút mới 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

Giải thuật bổ sung phần

tử Giải thuật loại bỏ một 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òn có cấu trúc dữ liệu kiểu

Trang 5

Stack vµ Queue liªn kÕt

Trong gi¸o tr×nh cßn 2 lo¹i cÊu tróc liªn kÕt C©y vµ §å thÞ.

Ngày đăng: 18/12/2018, 11:45

TỪ KHÓA LIÊN QUAN

w