ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
دسته بندی | کامپیوتر و IT |
فرمت فایل | pptx |
حجم فایل | 118 کیلو بایت |
تعداد صفحات فایل | 29 |
تعریف
lحالت خاصی از نوع داده عمومی لیستهای مرتب شده
lLIFO ( Last in first out)
lساختمان داده نیست بلکه نحوه استفاده از یک ساختمان داده است.
lیک آرایه نقش پشته را بازی می کند اگر :جایگذاری و حذف از یک سمت (top) انجام شود.
lنوع متغیری که در داخل استک نگهداری می شود متفاوت است.
lبهتر نیست که یک بار یک لیست را طراحی کنیم و چندین بار از آن استفاده کنیم؟
lC++ این امکان را به ما می دهد.
lبرای این که بتوانیم از یک استک برای چند بار استفاده کنیم باید از کلاس های الگو(template) استفاده کنیم.
l
(۱دستور template <class KeyType> را قبل از هر کلاس وهر تابعی که در آن از template استفاده می شود قرار داده می شود.
nبه جای KeyType می توان هر اسم دیگر که در شرایط اسم در C++ صدق می کند استفاده کرد با این شرط که بعد از اسم گذاری فقط ازهمان اسم استفاده شود.
(۲اگر در کلاسی از template استفاده شود تعریف توابع آن کلاس به شکل مقابل تبدیل می شوند.
template <class KeyType>
retValType myClass< KeyType > :: Func(paramet list)
{
declaration and statements
}
template <class KeyType >
void Stack< KeyType > :: Push(KeyType newElement)
{
//declaration and statements
}
(۳هر جا لازم است متغیری از نوع الگو استفاده شود از قوانین تعریف و استفاده از متغیر معمولی استفاده می کنیم. مثلا برای ارسال به تابع از روش زیر استفاده می کنیم.
retValType Function(KeyType value){}
(۴برای ساختن شیئی از یک کلاس از نوع متغیری که میخواهیم از دستورالعمل زیر استفاده می کنیم:
myClass
مثال:
Stack <int> intStack;
که یک شی پشته با نوع اعداد صحیح ایجاد می کند.
نکته : پس از تعیین نوع شی نمی توان از نوع دیگر به شی فرستاد
–خطای زمان کامپایل، اجرا و یا از دست دادن اطلاعات
template
class Stack
{ //Object: A finite ordered list with zero or more elements
public:
Stack(int MaxStackSize=DefauktSize);
Boolean IsFull();
void Push (const KeyType &item);
Boolean IsEmpty();
KeyType* Pop();
}
lاگر top=0 باشد شرط خالی و پر بودن پشته چیست؟ چه تغییراتی در ترتیب دستورات Push و Pop بایستی ایجاد شود؟
lبه سوال ۲ از تمرینات بخش ۳-۲ پاسخ دهید؟
l
lاگر rear=front=0 باشد شرط خالی و پر بودن صف چیست؟ چه تغییراتی در ترتیب دستورات Add و Delete بایستی ایجاد شود؟
l
lتعداد عناصر موجود در صف؟
lچگونه می توان از صف در زمانبندی برنامه ها استفاده نمود ؟(مثال ۳-۲)
lروشی برای جلوگیری از اتلاف حافظه.
l
انواع:
۳٫صف حلقوی