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

Giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p9 pot

5 307 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 133,77 KB

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

Nội dung

Để quản lý một danh sách liên kết chúng ta có thể sử dụng nhiều phương pháp khác nhau và tương ứng với các phương pháp này chúng ta sẽ có các cấu trúc dữ liệu khác nhau, cụ thể: - Quản l

Trang 1

Để quản lý một danh sách liên kết chúng ta có thể sử dụng nhiều phương pháp khác nhau và tương ứng với các phương pháp này chúng ta sẽ có các cấu trúc dữ liệu khác nhau, cụ thể:

- Quản lý địa chỉ phần tử đầu danh sách:

SLL_Type SLList1;

Hình ảnh minh họa:

- Quản lý địa chỉ phần tử đầu và cuối danh sách:

typedef struct SLL_PairNode { SLL_Type SLLFirst;

SLL_Type SLLLast;

} SLLP_Type;

SLLP_Type SLList2;

Hình ảnh minh họa:

- Quản lý địa chỉ phần tử đầu, địa chỉ phần tử cuối và số phần tử trong danh sách:

typedef struct SLL_PairNNode { SLL_Type SLLFirst;

SLL_Type SLLLast;

unsigned NumNode;

} SLLPN_Type;

SLLPN_Type SLList3;

Hình ảnh minh họa:

NumNode = 7

B Các thao tác trên danh sách liên kết đơn:

Với mỗi cách quản lý khác nhau của danh sách liên kết đơn , các thao tác cũng sẽ có sự khác nhau về mặt chi tiết song nội dung cơ bản ít có sự khác nhau Do vậy, ở đây chúng ta chỉ trình bày các thao tác theo cách quản lý thứ nhất (quản lý địa chỉ của phần tử đầu danh sách liên kết đơn), các cách quản lý khác sinh viên tự vận dụng để điều chỉnh cho thích hợp

w

Trang 2

a Khởi tạo danh sách (Initialize):

Trong thao tác này chỉ đơn giản là chúng ta cho giá trị con trỏ quản lý địa chỉ phần tử đầu danh sách về con trỏ NULL Hàm khởi tạo danh sách liên kết đơn như sau:

void SLL_Initialize(SLL_Type &First) { First = NULL;

return;

} Hình ảnh minh họa:

SLList1 NULL

b Tạo mới một phần tử / nút:

Giả sử chúng ta cần tạo mới một phần tử có thành phần dữ liệu là NewData

- Thuật toán:

B1: First = new SLL_OneNode B2: IF (First = NULL)

Thực hiện Bkt B3: First->NextNode = NULL B4: First->Key = NewData Bkt: Kết thúc

- Cài đặt thuật toán:

Hàm SLL_Create_Node có prototype:

SLL_Type SLL_Create_Node(T NewData);

Hàm tạo mới một nút có thành phần dữ liệu là NewData, hàm trả về con trỏ trỏ tới địa chỉ của nút mới tạo Nếu không đủ bộ nhớ để tạo, hàm trả về con trỏ NULL

SLL_Type SLL_Create_Node(T NewData) { SLL_Type Pnode = new SLL_OneNode;

if (Pnode != NULL) { Pnode->NextNode = NULL;

Pnode->Key = NewData;

} return (Pnode);

}

- Minh họa thuật toán:

Giả sử chúng ta cần tạo nút có thành phần dữ liệu là 20: NewData = 20 Pnode = new SLL_OneNode

Pnode

Pnode->NextNode = NULL Pnode->Key = NewData

w

Trang 3

Pnode 20 NULL

c Thêm một phần tử vào trong danh sách:

Giả sử chúng ta cần thêm một phần tử có giá trị thành phần dữ liệu là NewData vào trong danh sách Việc thêm có thể diễn ra ở đầu, cuối hay ở giữa danh sách liên kết

Do vậy, ở đây chúng ta trình bày 3 thao tác thêm riêng biệt nhau:

- Thuật toán thêm phần tử vào đầu danh sách liên kết đơn:

B1: NewNode = SLL_Create_Node (NewData) B2: IF (NewNode = NULL)

Thực hiện Bkt B3: NewNode->NextNode = SLList // Nối SLList vào sau NewNode B4: SLList = NewNode // Chuyển vai trò đứng đầu của NewNode cho SLList Bkt: Kết thúc

- Minh họa thuật toán:

Giả sử chúng ta cần thêm nút có thành phần dữ liệu là 25: NewData = 25 NewNode

NULL

NewNode->NextNode = SLList:

NewNode

25

NULL

SLList = NewNode:

NewNode

25

Kết quả sau khi chèn:

- Thuật toán thêm phần tử vào cuối danh sách liên kết đơn:

B1: NewNode = SLL_Create_Node (NewData) B2: IF (NewNode = NULL)

w

Trang 4

Thực hiện Bkt B3: IF (SLList = NULL) B3.1: SLList = NewNode B3.2: Thực hiện Bkt // Tìm đến địa chỉ của phần tử cuối cùng trong danh sách liên kết đơn B4: CurNode = SLList

B5: IF (CurNode->NextNode = NULL) Thực hiện B8

B6: CurNode = CurNode->NextNode // Chuyển qua nút kế tiếp B7: Lặp lại B5

B8: CurNode->NextNode = NewNode // Nối NewNode vào sau CurNode Bkt: Kết thúc

- Minh họa thuật toán:

Giả sử chúng ta cần thêm nút có thành phần dữ liệu là 25: NewData = 25

NULL

CurNode->NextNode = NewNode:

NULL

Kết quả sau khi chèn:

- Thuật toán thêm phần tử vào giữa danh sách liên kết đơn:

Giả sử chúng ta cần thêm một phần tử có giá trị thành phần dữ liệu là NewData vào trong danh sách SLList vào ngay sau nút có địa chỉ InsNode Trong thực tế nhiều khi chúng ta phải thực hiện thao tác tìm kiếm để xác định địa chỉ InsNode, ở đây giả sử chúng ta đã xác định được địa chỉ này

B1: NewNode = SLL_Create_Node (NewData) B2: IF (NewNode = NULL)

Thực hiện Bkt B3: IF (InsNode->NextNode = NULL) B3.1: InsNode->NextNode = NewNode B3.2: Thực hiện Bkt

w

Trang 5

// Nối các nút kế sau InsNode vào sau NewNode B4: NewNode->NextNode = InsNode->NextNode // Chuyển mối liên kết giữa InsNode với nút kế của nó về NewNode B5: InsNode->NextNode = NewNode

Bkt: Kết thúc

- Minh họa thuật toán:

Giả sử chúng ta cần thêm nút có thành phần dữ liệu là 25 vào sau nút có địa chỉ InsNode như sau: NewData = 25

NewNode->NextNode = InsNode->NextNode:

InsNode->NextNode = NewNode:

SLList

InsNode Kết quả sau khi chèn:

- Cài đặt thuật toán:

Các hàm thêm phần tử tương ứng với các trường hợp có prototype như sau:

SLL_Type SLL_Add_First(SLL_Type &SList, T NewData);

SLL_Type SLL_Add_Last(SLL_Type &SList, T NewData);

SLL_Type SLL_Add_Mid(SLL_Type &SList, T NewData, SLL_Type &InsNode);

Hàm thực hiện việc chèn phần tử có giá trị thành phần dữ liệu NewData vào trong danh sách liên kết đơn quản lý bởi con trỏ đầu danh sách SList tương ứng với 3 trường hợp: Thêm đầu, thêm cuối, thêm giữa Các hàm trả về giá trị là địa chỉ của nút đầu tiên nếu việc thêm thành công Trong trường hợp ngược lại, các hàm trả về con trỏ NULL

Riêng đối với trường hợp thêm giữa, hàm SLL_Add_Mid thực hiện việc thêm vào ngay sau nút có địa chỉ InsNode Nội dung của các hàm như sau:

w

Ngày đăng: 22/07/2014, 21:20

HÌNH ẢNH LIÊN QUAN

Hình ảnh minh họa: - Giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p9 pot
nh ảnh minh họa: (Trang 1)
Hình ảnh minh họa: - Giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p9 pot
nh ảnh minh họa: (Trang 1)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm