Các thao tác trên hàng đợi tổ chức bằng danh sách liên kết đơn

Một phần của tài liệu Danh sách list trong cấu trúc dữ liệu (Trang 93 - 100)

5. Danh sách hạn chế

5.1.3.Các thao tác trên hàng đợi tổ chức bằng danh sách liên kết đơn

kết đơn

a. Khởi tạo hàng đợi (Initialize)

b. Thêm 1 phần tử vào hàng đợi (Add)

c. Lấy nội dung 1 phần tử trong hàng đợi ra xử lý (Get) d. Hủy hàng đợi

5.1. Hàng đợi (tt)

5.1.3.a. Khởi tạo hàng đợi (dùng danh sách liên kết đơn)

Tương tự với danh sách liên kết đơn, hàm khởi tạo thực hiện gán con trỏ Front và Rear về NULL

SQUEUE SQInitialize (SQUEUE &QList) {

QList.Front = QList.Rear = NULL; return (QList);

95

5.1. Hàng đợi (tt)

5.1.3.b. Thêm 1 phần tử vào hàng đợi (dùng danh sách liên kết đơn)

Thêm phần tử vào sau phần tử Rear (Thêm vào cuối danh sách liên kết)

Giả sử dữ liệu đưa vào hàng đợi là NewData B1: NewElement = SLLCreateNode(NewData) B2: IF (NewElement == NULL)

Thực hiện BKT

B3: IF (SQList.Front == NULL) // hàng đợi dang rỗng B3.1: SQList.Front = SQList.Rear = NewElement B3.2: Thực hiện BKT

B4: SQList.Rear->Next = NewElement B5: SQList.Rear = NewElement

5.1. Hàng đợi (tt)

5.1.3.b. Thêm 1 phần tử vào hàng đợi (dùng danh sách liên kết đơn)

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

QType SQAdd(SQUEUE &Qlist, T NewData)

{ QType NewElement = SLLCreateNode(NewData) if (NewElement == NULL)

return (NULL);

if (QList.Front == NULL)

QList.Front = QList.Rear = NewElement; else { QList.Rear->Next = NewElement; QList.Rear = NewElement; } return(NewElement); }

97

5.1. Hàng đợi (tt)

5.1.3.c. Lấy nội dung 1 phần tử trong hàng đợi ra xử lý (dùng danh sách liên kết đơn)

Lấy nội dung thành phần dữ liệu của phần tử ở địa chỉ Front ra biến Data và tiến hành hủy phần tử này

B1: IF (SQList.Front == NULL) // nếu hàng đợi bị rỗng Thực hiện BKT

B2: TempElement = SQList.Front; (adsbygoogle = window.adsbygoogle || []).push({});

B3: SQList.Front = SQList.Front ->Next B4: TempElement ->Next = NULL

B5: Data = TempElement ->Key B6: IF (SQList.Front == NULL)

SQList.Rear == NULL B7: delete TempElement BKT: Kết thúc

98

5.1. Hàng đợi (tt)

5.1.3.c. Lấy nội dung 1 phần tử trong hàng đợi ra xử lý (dùng danh sách liên kết đơn) Cài đặt thuật toán

int SQGet (SQUEUE &QList, T &Data) { if (QList.Front = NULL)

return (-1);

QType TempElement = QList.Front; QList.Front = QList.Front ->Next; TempElement ->Next = NULL; Data = TempElement ->Next ; if (QList.Front = NULL)

QList.Rear = NULL; delete TempElement; return(1);

99

5.1. Hàng đợi (tt)

5.1.3.d. Hủy hàng đợi (dùng danh sách liên kết đơn)

void SQQueue (SQUEUE &QList) {

QList.Rear = NULL;

while (QList.Front != NULL) {

QType TempElement = QList.Front; TempElement ->Next = NULL;

delete TempElement; }

return; }

Một phần của tài liệu Danh sách list trong cấu trúc dữ liệu (Trang 93 - 100)