Biểu diễn Queue dùng mảngBiểu diễn Queue dùng mảng

Một phần của tài liệu danh-sach-lien-ket pdf (Trang 138 - 146)

139

Biểu

Biểu diễndiễn QueueQueue dùngdùng mảngmảng

 ĐểĐể khaikhai báobáo mộtmột hànghàng đợiđợi, , tata cầncần: :

 mộtmột mảngmảng mộtmột chiềuchiều QQ, ,

 haihai biếnbiến nguyênnguyên ff, , rr chocho biếtbiết chỉchỉ sốsố củacủa đầuđầu vàvà cuốicuối của

của hànghàng đợiđợi

 hằnghằng sốsố NN chocho biếtbiết kíchkích thướcthước tốitối đađa củacủa hànghàng đợiđợi. .

 NgồiNgồi rara, , khikhi dùngdùng mảngmảng biểubiểu diễndiễn hànghàng đợiđợi, , cầncần dùngdùng

một

một giágiá trịtrị đặcđặc biệtbiệt, , kýký hiệuhiệu làlà NULLDATANULLDATA, , đểđể gángán chocho những

những ơơ cịncịn trốngtrống trêntrên hànghàng đợiđợi. . GiáGiá trịtrị nàynày làlà mộtmột giágiá trịtrị nằm

140

Biểu

Biểu diễndiễn QueueQueue dùngdùng mảngmảng

 TrạngTrạng tháithái hànghàng đợiđợi lúclúc bìnhbình thườngthường: :

141

Biểu

Biểu diễndiễn QueueQueue dùngdùng mảngmảng

 HàngHàng đợiđợi cĩcĩ thểthể đượcđược khaikhai báobáo cụcụ thểthể nhưnhư sausau::

typedef struct node

{

int data; }

typedef struct queue {

int front, rear;

node list[N]; }

 DoDo khikhi càicài đặtđặt bằngbằng mảngmảng mộtmột chiềuchiều, , hànghàng đợiđợi cĩcĩ kíchkích thướcthước

tối

tối đađa nênnên cầncần xâyxây dựngdựng thêmthêm mộtmột thaothao táctác phụphụ chocho hànghàng đợiđợi::

142

Biểu

Biểu diễndiễn QueueQueue dùngdùng mảngmảng

 TạoTạo hànghàng đợiđợi rỗngrỗng

void Init(queue &q) {

q.front = q.rear = UNDERFLOW; }

 Kiểm tra queue rỗng

int Empty(queue q) {

if(q.front == q.rear == UNDERFLOW) return 1; return 0;

143

Biểu

Biểu diễndiễn QueueQueue dùngdùng mảngmảng

 KiểmKiểm tratra hànghàng đợiđợi đầyđầy hayhay khơngkhơng

int Full(queue q) {

if( q.front== 0 && q.rear== N-1) return 1;

if( q.front == q.rear+1) return 1;

return 0; }

144

Biểu

Biểu diễndiễn QueueQueue dùngdùng mảngmảng

 ThêmThêm mộtmột phầnphần tửtử xx vàovào cuốicuối hànghàng đợiđợi QQ

void EnQueue(queue &q, node x) {

if(!Full(q)) //Queue chưa đầy

{if(Empty(q) // Queue rỗng if(Empty(q) // Queue rỗng q.front=q.rear=0; else if( q.rear==N-1) q.rear=0; else q.rear++; q.list[q.rear]=x; } }

145

Biểu

Biểu diễndiễn QueueQueue dùngdùng mảngmảng

 TríchTrích, , huỷhuỷ phầnphần tửtử ởở đầuđầu hànghàng đợiđợi QQ

node DeQueue(queue &q) {

if(!Empty(q)) {

node t=q.list[q.front];

if(q.front == q.rear) Init(q);

else if(q.fornt == N -1) q.front = 0; else q.front++; return t; } }

146

Biểu

Một phần của tài liệu danh-sach-lien-ket pdf (Trang 138 - 146)

Tải bản đầy đủ (PPT)

(156 trang)