پاورپوینت آشنایی با Queues (pptx) 34 اسلاید
دسته بندی : پاورپوینت
نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
تعداد اسلاید: 34 اسلاید
قسمتی از متن PowerPoint (.pptx) :
Queues
Queue Definition
ليست مرتب با خواص زير:
تمام الحاقها در يک طرف انجام مي گردند. (tail)
تمام حذفها در طرف ديگر انجام مي شوند. (head)
صف: Q = (a0, a1, …, an-1)
a0 عنصر ابتداي ليست وan-1 عنصر انتهاي ليست است. براي تمام 1 <= i < n ،ai پشت سر ai-1 قرار دارد
Queue Definition
بخاطر خواص الحاق و حذف، صف خيلي شبيه:
صف نانوايي
ماشينها در ترافيک
بسته هاي داده در مسيريابها
...
است.
از صف همچنين به عنوانfirst-in first out ياد مي شود.
Queue Implementation Ideas
پياده سازي صف:
آرايه اي يا ليست پيوندي؟ کدام بهتر است؟
اشاره گر ابتدا
مکان اولين عنصر صف
اشاره گر انتها
مکان آخرين عنصر صف
Array-Based Queue Definition
template
class Queue
{
public:
Queue(int MaxSize = DefaultSize);
~Queue();
bool IsFull();
bool IsEmpty();
void Add(const KeyType& item);
KeyType* Delete(KeyType& item);
private:
void QueueFull(); // error handling
void QueueEmpty(); // error handling
int head, tail;
KeyType* queue;
int MaxSize;
};
Queue Implementation
جزء سازنده:
template
Queue::Queue(int MaxQueueSize): MaxSize(MaxQueueSize)
{
queue = new KeyType[MaxSize];
head = tail = -1;
}
Queue Implementation
جزء مخرب:
template
Queue::~Queue()
{
delete [] queue;
head = tail = -1;
}
Queue Implementation
IsFull() و IsEmpty() :
template
bool Queue::IsFull()
{
return (tail == (MaxSize-1));
}
template
bool Queue::IsEmpty()
{
return (head == tail);
}
Queue Implementation
Add() و Delete() :
template
void Queue::Add (const KeyType& item)
{
if (IsFull()) {QueueFull(); return;}
else { tail = tail + 1; queue[tail] = item; }
}
template
KeyType* Queue::Delete(KeyType& item)
{
if (IsEmpty()) {QueueEmpty(); return 0};
else { head = head + 1; item = queue[head]; return &item; }
}