Xem mẫu
- //Thao tác DeQueue: l y ra 1 ph n t ñ u Queue
int DeQueue(QUEUE &q, int& itemout)
{
if (IsEmpty(q))
return 0; // Queue r ng, không l y ra ñư c
itemout = q.QArray[q.QFront]; // l y ph n t ñ u ra
q.QFront++;
q.QNumItems--;
if (q.QFront==q.QMax) // n u ñi h t m ng …
q.QFront = 0; // … quay tr v ñ u m ng
if (q.QNumItems==0) // n u l y ra ph n t cu i cùng
q.QFront = q.QRear = -1; // kh i t o l i Queue
return 1; // L y ra thành công
}
71
This is trial version Khoa CNTT Trư ng Cð CNTT TP.HCM
© Dương Thành Ph t-www.thayphet.net
www.adultpdf.com
- //Thao tác QueueFront: Ki m tra ph n t ñ u Queue
int QueueFront(const QUEUE &q, int& itemout)
{
if (IsEmpty(q))
return 0; // Queue r ng, không ki m tra
// l y ph n t ñ u ra
itemout = q.QArray[q.QFront];
return 1;
}
//Thao tác QueueRear: Ki m tra ph n t cu i Queue
int QueueRear(const QUEUE &q, int& itemout)
{
if (IsEmpty(q))
return 0; // Queue r ng, không ki m tra
// l y ph n t cu i ra
itemout = q.QArray[q.QRear];
return 1;
}
72
This is trial version Khoa CNTT Trư ng Cð CNTT TP.HCM
© Dương Thành Ph t-www.thayphet.net
www.adultpdf.com
- Hàng ñ i s d ng DSLK
//Khai báo c u trúc
typedef struct tagNODE
{
int data;
tagNODE* pNext;
} NODE, *PNODE;
typedef struct tagQUEUE
{
int NumItems;
PNODE pFront, pRear;
} QUEUE;
73
This is trial version Khoa CNTT Trư ng Cð CNTT TP.HCM
© Dương Thành Ph t-www.thayphet.net
www.adultpdf.com
- Các thao tác cơ b n
int InitQueue(QUEUE& q);
int IsEmpty(const QUEUE& q);
int IsFull(const QUEUE& q);
int EnQueue(QUEUE &q, int newitem);
int DeQueue(QUEUE &q, int& itemout);
int QueueFront(const QUEUE &q, int& itemout);
int QueueRear(const QUEUE &q, int& itemout);
74
This is trial version Khoa CNTT Trư ng Cð CNTT TP.HCM
© Dương Thành Ph t-www.thayphet.net
www.adultpdf.com
- //Kh i t o Queue r ng
int InitQueue(QUEUE& q)
{
q.NumItems = 0;
q.pFront = q.pRear = NULL;
return 1;
}
75
This is trial version Khoa CNTT Trư ng Cð CNTT TP.HCM
© Dương Thành Ph t-www.thayphet.net
www.adultpdf.com
- //Ki m tra Queue r ng
int IsEmpty(const QUEUE& q)
{
return (q.NumItems==0);
}
//Ki m tra Queue ñ y
int IsFull(const QUEUE& q)
{
PNODE tmp = new NODE;
if (tmp==NULL)
return 1;
delete tmp;
return 0;
}
76
This is trial version Khoa CNTT Trư ng Cð CNTT TP.HCM
© Dương Thành Ph t-www.thayphet.net
www.adultpdf.com
- //Thêm 1 ph n t vào cu i Queue
int EnQueue(QUEUE &q, int newitem)
{
if (IsFull(q)==1)
return 0;
PNODE p = new NODE;
p->data = newitem;
p->pNext = NULL;
if (q.pFront==NULL && q.pRear==NULL)
q.pFront = q.pRear = p;
else
{
q.pRear->pNext = p;
q.pRear = p;
}
q.NumItems++;
return 1;
}
77
This is trial version Khoa CNTT Trư ng Cð CNTT TP.HCM
© Dương Thành Ph t-www.thayphet.net
www.adultpdf.com
- //L y ra 1 ph n t ñ u Queue
int DeQueue(QUEUE &q, int& itemout)
{
if (IsEmpty(q)==1)
return 0;
PNODE p = q.pFront;
q.pFront = p->pNext;
itemout = p->data;
q.NumItems--;
delete p;
if (q.NumItems==0)
InitQueue(q);
return 1;
}
78
This is trial version Khoa CNTT Trư ng Cð CNTT TP.HCM
© Dương Thành Ph t-www.thayphet.net
www.adultpdf.com
- //Ki m tra 1 ph n t ñ u Queue
int QueueFront(const QUEUE &q, int& itemout)
{
if (IsEmpty(q)==1)
return 0;
itemout = q.pFront->data;
return 1;
}
//Ki m tra 1 ph n t cu i Queue
int QueueRear(const QUEUE &q, int& itemout)
{
if (IsEmpty(q)==1)
return 0;
itemout = q.pRear->data;
return 1;
}
79
This is trial version Khoa CNTT Trư ng Cð CNTT TP.HCM
© Dương Thành Ph t-www.thayphet.net
www.adultpdf.com
nguon tai.lieu . vn