Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Tìm hiểu tầm quan trọng của cấu trúc dữ liệu trong giải thuật phần 7 ppsx
MIỄN PHÍ
Số trang
23
Kích thước
223.9 KB
Định dạng
PDF
Lượt xem
1895

Tìm hiểu tầm quan trọng của cấu trúc dữ liệu trong giải thuật phần 7 ppsx

Nội dung xem thử

Mô tả chi tiết

Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät

Trang: 139

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);

}

c. Laáy noäi dung moät phaàn töû trong haøng ñôïi ra ñeå xöû lyù (Get):

Trong haøng ñôïi chuùng ta luoân luoân laáy noäi dung phaàn töû ôû ngay ñaàu haøng ñôïi, taïi vò

trí Front (neáu haøng ñôïi khoâng roãng). Giaû söû ta caàn laáy döõ lieäu ra bieán Data:

- Thuaät toaùn:

// Neáu haøng ñôïi bò roãng

B1: IF (CQ_List.Front = 0)

Thöïc hieän Bkt

B2: Data = CQ_List.List[CQ_List.Front]

B3: IF (CQ_List.Rear = CQ_List.Front) // Haøng ñôïi chæ coù 1 phaàn töû

B3.1: CQ_List.Rear = CQ_List.Front = 0

B3.2: Thöïc hieän Bkt

B4: IF (CQ_List.Front = CQ_List.Len)

CQ_List.Front = 1

B5: ELSE

CQ_List.Front++

Bkt: Keát thuùc

- Caøi ñaët thuaät toaùn:

Haøm CQ_Get coù prototype:

int CQ_Get (C_QUEUE &QList, T &Data);

Haøm thöïc hieän vieäc laáy noäi dung phaàn töû ñaàu haøng ñôïi quaûn lyù bôûi QList vaø ghi

nhaän vaøo Data neáu laáy ñöôïc. Haøm traû veà giaù trò 1 neáu vieäc laáy thaønh coâng, ngöôïc

laïi khi haøng ñôïi bò roãng haøm traû veà giaù trò -1.

Noäi dung cuûa haøm nhö sau:

int CQ_Get (C_QUEUE &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

Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät

Trang: 140

QList.Front += 1;

return (1);

}

d. Huûy haøng ñôïi:

Trong thao taùc naøy chuùng ta thöïc hieän vieäc huûy boä nhôù ñaõ caáp phaùt cho haøng ñôïi.

Haøm CQ_Delete coù noäi dung nhö sau:

void CQ_Delete (C_QUEUE &QList)

{ delete QList.List;

return;

}

C. Caùc thao taùc treân haøng ñôïi toå chöùc baèng danh lieân keát ñôn:

Khaùc vôùi haøng ñôïi bieåu dieãn baèng danh saùch ñaëc, ôû ñaây haøng ñôïi chæ bò ñaày khi heát

boä nhôù vaø khoâng bao giôø bò traøn.

a. Khôûi taïo haøng ñôïi (Initialize):

Töông töï nhö trong danh saùch lieân keát ñôn, trong thao taùc naøy chuùng ta chæ ñôn

giaûn thöïc hieän vieäc gaùn caùc con troû Front vaø Rear veà con troû NULL. Haøm

SQ_Initialize coù noäi dung nhö sau:

S_QUEUE SQ_Initialize (S_QUEUE &QList)

{ QList.Front = QList.Rear = NULL;

return (QList);

}

b. Theâm (Ñöa) moät phaàn töû vaøo haøng ñôïi (Add):

ÔÛ ñaây chuùng ta theâm moät phaàn töû vaøo sau Rear (Theâm vaøo cuoái danh saùch lieân keát).

Giaû söû chuùng ta caàn ñöa phaàn töû coù giaù trò döõ lieäu laø NewData vaøo trong haøng ñôïi:

- Thuaät toaùn:

B1: NewElement = SLL_Create_Node(NewData)

B2: IF (NewElement = NULL)

Thöïc hieän Bkt

B3: IF (SQ_List.Front = NULL) // Neáu haøng ñôïi bò roãng

B3.1: SQ_List.Front = SQ_List.Rear = NewElement

B3.2: Thöïc hieän Bkt

B4: SQ_List.Rear->Next = NewElement

B5: SQ_List.Rear = NewElement

Bkt: Keát thuùc

- Caøi ñaët thuaät toaùn:

Haøm SQ_Add coù prototype:

Q_Type SQ_Add (S_QUEUE &QList, T NewData);

Haøm thöïc hieän vieäc theâm phaàn töû coù noäi dung NewData vaøo trong haøng ñôïi quaûn

lyù bôûi QList. Haøm traû veà ñòa chæ cuûa phaàn töû vöøa môùi theâm neáu vieäc theâm thaønh

coâng, ngöôïc laïi haøm traû veà con troû NULL.

Tải ngay đi em, còn do dự, trời tối mất!