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

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

5. Danh sách hạn chế

5.1.2.Các thao tác trên hàng đợi tổ chức bằng danh sách đặc

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.2.a. Khởi tạo hàng đợi (tổ chức bằng danh sách đặc)

B1: CQList.Len = Length

B2: CQList.List = new T[Length] B3: IF(CQList.List == NULL)

Thực hiện BKT

B4: CQList.Front = CQList.Rear = 0 BKT: Kết thúc

87

5.1. Hàng đợi (tt)

5.1.2.a. Khởi tạo hàng đợi (tổ chức bằng danh sách đặc)

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

T * CQInitialize (CQUEUE & QList, int Length) {

QList.Len = Length;

QList.List = new T[Length]; if (QList.List == NULL)

return (NULL);

QList.Front = QList.Rear =-1; return (QList.List);

88

5.1. Hàng đợi (tt)

5.1.2.b. Thêm 1 phần tử vào hàng đợi (tổ chức bằng danh sách

đặc)

Thuật toán

// nếu hàng đợi đã bị đầy

B1: IF(CQList.Front ==1 AND CQList.Rear == CQList.Len) Thực hiện BKT

B2: IF(CQList.Rear+1 == CQList.Front) Thực hiện BKT

B3: IF(CQList.Front = 0) // nếu hàng đợi rỗng CQList.Front = 1 B4: IF(CQList.Rear = CQList.Len) CQList.Rear = 1 B5: ELSE CQList.Rear ++ B6: CQList.List[CQList.Rear] = NewData BKT: Kết thúc

89

5.1. Hàng đợi (tt)

5.1.2.b. Thêm 1 phần tử vào hàng đợi (tổ chức bằng danh sách

đặc) (adsbygoogle = window.adsbygoogle || []).push({});

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

int CQAdd(CQUEUE & QList, T NewData)

{ if (QList.Front == 0 && QList.Rear == QList.Len -1) return (-1); if (QList.Rear +1 == QList.Front) return (-1); if (QList.Front == -1) QList.Front =0 if (QList.Rear == QList.Len) QList.Rear = 0; else QList.Rear += 1; QList.List[QList.Rear] = NewData return (QList.Rear ); }

5.1. Hàng đợi (tt)

5.1.2.c. Lấy nội dung 1 phần tử trong hàng đợi ra xử lý (tổ chức bằng danh sách đặc) B1: IF (CQList.Front = 0) Thực hiện BKT B2: Data = CQList.List[CQList.Front] B3: IF(CQList.Rear == CQList.Front) B3.1: CQList.Rear = CQList.Front = 0 B3.2: Thực hiện BKT B4: IF (CQList.Front = CQList.Len) CQList.Front = 1 B5: ELSE CQList.Front++ BKT: Kết thúc

91

5.1. Hàng đợi (tt)

5.1.2.c. Lấy nội dung 1 phần tử trong hàng đợi ra xử lý (tổ chức bằng danh sách đặc)

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

int CQGet(CQUEUE & QList, T &Data) { if (QList.Front == -1) return (-1); Data = QList.List[QList.Front]; if (QList.Front == QList.Rear) { QList.Front = QList.Rear = -1; return (1); } if (QList.Front == QList.Len -1) QList.Front = 0; else QList.Front += 1; return (1); }

5.1. Hàng đợi (tt)

5.1.2.d. Hủy hàng đợi (tổ chức bằng danh sách đặc)

Hủy bộ nhớ cấp phát cho hàng đợi void CQDelete(CQUEUE & QList) {

delete QList.List; return;

93

5.1. Hàng đợi (tt)

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