***2
تعریف
حالت خاصی از نوع داده عمومی لیست های مرتب شده
lLIFO ( Last in first out)
ساختمان داده نیست بلکه نحوه استفاده از یک ساختمان داده است.
یک آرایه نقش پشته را بازی می کند اگر :جایگذاری و حذف از یک سمت (top) انجام شود.
***3
ADT پشته
class Stack
{ //Object: A finite ordered list with zero or more elements
public:
Stack(int MaxStackSize=DefauktSize);
Boolean IsFull();
void Push (int &item);
Boolean IsEmpty();
int* Delete();
}
***5
طراحی کلاس Stack
نوع متغیری که در داخل استک نگهداری می شود متفاوت است.
بهتر نیست که یک بار یک لیست را طراحی کنیم و چندین بار از آن استفاده کنیم؟
C++ این امکان را به ما می دهد.
lبرای این که بتوانیم از یک استک برای چند بار استفاده کنیم باید از کلاس های الگو(template) استفاده کنیم.
***6
چگونگی کار با template
(1دستور template را قبل از هر کلاس وهر تابعی که در آن از template استفاده می شود قرار داده می شود.
nبه جای KeyType می توان هر اسم دیگر که در شرایط اسم در C++ صدق می کند استفاده کرد با این شرط که بعد از اسم گذاری فقط ازهمان اسم استفاده شود.
***7
(2اگر در کلاسی از template استفاده شود تعریف توابع آن کلاس به شکل مقابل تبدیل می شوند.
template
retValType myClass< KeyType > :: Func(paramet list)
{
declaration and statements
}
template
void Stack< KeyType > :: Push(KeyType newElement)
{
//declaration and statements
}