Xem mẫu

  1. //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
  2. //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
  3. 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
  4. 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
  5. //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
  6. //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
  7. //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
  8. //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
  9. //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