SlideShare a Scribd company logo
1 of 53
Data
structures
Stack
Mohamad Ali Naseri
Soheil Hosseini
Superviser: Leila Pashaie
‫هایی‬ ‫محدودیت‬ ‫با‬ ‫ولی‬ ‫آرایه‬ ‫همانند‬ ، ‫پشته‬
‫اضافه‬ ‫و‬ ‫حذف‬ ‫در‬ ‫مفید‬
Stack
‫مقدمه‬
‫تعریف‬
‫پشته‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
Stack ‫مقدمه‬
‫تعریف‬
‫پشته‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫همانند‬ ، ‫پشته‬
‫با‬ ‫ولی‬ ‫آرایه‬
‫هایی‬ ‫محدودیت‬
‫و‬ ‫حذف‬ ‫در‬ ‫مفید‬
‫اضافه‬
‫گیرد‬ ‫می‬ ‫صورت‬ ‫آن‬ ‫در‬ ‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬ ‫از‬ ‫تنها‬ ‫که‬ ‫است‬ ‫ای‬ ‫داده‬ ‫ساختار‬
‫در‬ ‫مفید‬ ‫هایی‬ ‫محدودیت‬ ‫با‬ ‫ولی‬ ‫آرایه‬ ‫همانند‬ ، ‫پشته‬
‫اضافه‬ ‫و‬ ‫حذف‬
Stack
‫مقدمه‬
‫تعریف‬
‫پشته‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
Stack
‫مقدمه‬
‫تعریف‬
‫پشته‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫ای‬ ‫داده‬ ‫ساختار‬
‫از‬ ‫تنها‬ ‫که‬ ‫است‬
‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬
‫می‬ ‫صورت‬ ‫آن‬ ‫در‬
‫گیرد‬
‫تعریف‬
‫پشته‬
‫ای‬ ‫داده‬ ‫ساختار‬
‫از‬ ‫تنها‬ ‫که‬ ‫است‬
‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬
‫می‬ ‫صورت‬ ‫آن‬ ‫در‬
‫گیرد‬
‫عنصر‬ ‫تنها‬ ‫پشته‬ ‫این‬ ‫در‬
(
3
)
‫می‬ ‫دسترس‬ ‫قابل‬
‫باشد‬
‫تعریف‬
‫پشته‬
‫ای‬ ‫داده‬ ‫ساختار‬
‫از‬ ‫تنها‬ ‫که‬ ‫است‬
‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬
‫می‬ ‫صورت‬ ‫آن‬ ‫در‬
‫گیرد‬
N ‫پشته‬ ‫یک‬ ‫نمایش‬ ‫برای‬ ‫راه‬ ‫ترین‬ ‫ساده‬
:
‫ساخت‬
‫طول‬ ‫به‬ ‫بعدی‬ ‫یک‬ ‫ای‬ ‫آرایه‬
‫که‬ ‫دارد‬ ‫وجود‬ ‫نام‬ ‫به‬ ‫متغیری‬ ‫این‬ ‫کنار‬ ‫در‬
‫دارد‬ ‫اشاره‬ ‫آن‬ ‫باالیی‬ ‫عنصر‬ ‫به‬
top
POP
Push
‫حذف‬
‫عنصر‬
‫عنصر‬ ‫اضافه‬
Stack
‫مقدمه‬
‫تعریف‬
‫پشته‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
LIFO = Last Input First Output
‫را‬ ‫آن‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫عملکرد‬ ‫به‬ ‫توجه‬ ‫با‬
‫کرد‬ ‫تعریف‬ ‫انتزاعی‬ ‫داده‬ ‫یک‬ ‫صورت‬ ‫به‬
LIFO = Last Input First Output
‫گیرد‬ ‫می‬ ‫صورت‬ ‫آن‬ ‫در‬ ‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬ ‫از‬ ‫تنها‬ ‫که‬ ‫است‬ ‫ای‬ ‫داده‬ ‫ساختار‬
Stack
‫مقدمه‬
‫تعریف‬
‫پشته‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
Stack
‫مقدمه‬
‫تعریف‬
‫پشته‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫عملکرد‬ ‫به‬ ‫توجه‬ ‫با‬
‫آن‬ ‫توان‬ ‫می‬ ‫پشته‬
‫یک‬ ‫صورت‬ ‫به‬ ‫را‬
‫انتزاعی‬ ‫داده‬
‫کرد‬ ‫تعریف‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫عملکرد‬ ‫به‬ ‫توجه‬ ‫با‬
‫آن‬ ‫توان‬ ‫می‬ ‫پشته‬
‫یک‬ ‫صورت‬ ‫به‬ ‫را‬
‫انتزاعی‬ ‫داده‬
‫کرد‬ ‫تعریف‬
1
.
‫اقالم‬ ‫مجموعه‬
:
‫از‬ ‫فقط‬ ‫که‬ ‫عناصری‬ ‫مجموعه‬
‫هستند‬ ‫دسترسی‬ ‫قابل‬
top
‫خالی‬ ‫پشته‬ ‫یک‬
‫کند‬ ‫می‬ ‫ایجاد‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
1
.
‫اقالم‬ ‫مجموعه‬
:
‫از‬ ‫فقط‬ ‫که‬ ‫عناصری‬ ‫مجموعه‬
‫هستند‬ ‫دسترسی‬ ‫قابل‬
top
2
.
‫عملیات‬
:
Create
‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عملیات‬
‫دهد‬ ‫می‬ ‫انجام‬ ‫را‬
Empty
‫پشته‬ ‫باالی‬ ‫به‬ ‫عنصری‬ ‫افزودن‬ ‫عمل‬
‫دهد‬ ‫می‬ ‫انجام‬ ‫رو‬
Push
‫پشته‬ ‫باالی‬ ‫از‬ ‫حذف‬ ‫عمل‬
‫دهد‬ ‫می‬ ‫انجام‬ ‫را‬
POP
‫باالی‬ ‫عنصر‬ ‫به‬
‫دارد‬ ‫اشاره‬ ‫پشته‬
Top
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬
Typedef struct {
int key ;
/* other fields */
} elementtype ;
Elementtype stack[MAXSTACK];
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬
Typedef struct {
int key ;
/* other fields */
} elementtype ;
Elementtype stack[MAXSTACK];
‫پر‬ ‫یا‬ ‫خالی‬ ‫شرط‬ ‫بررسی‬
‫پشته‬ ‫بودن‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬
*/
‫بودن‬ ‫خالی‬ ‫شرط‬
/*
if (top = -1 )
Cout<<“Stack is empty ;
/* ‫بودن‬ ‫پر‬ ‫*شرط‬/
if (top == MAXSTACK )
Cout<<“Stack is full”;
‫پر‬ ‫یا‬ ‫خالی‬ ‫شرط‬ ‫بررسی‬
‫پشته‬ ‫بودن‬
Stack
‫مقدمه‬
‫تعریف‬
‫پشته‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬
*/
‫بودن‬ ‫خالی‬ ‫شرط‬
/*
if (top = -1 )
Cout<<“Stack is empty ;
/* ‫بودن‬ ‫پر‬ ‫*شرط‬/
if (top == MAXSTACK )
Cout<<“Stack is full”;
‫پر‬ ‫یا‬ ‫خالی‬ ‫شرط‬ ‫بررسی‬
‫پشته‬ ‫بودن‬
top
MAXSTACK
top= = -1
‫که‬ ‫است‬ ‫تابع‬ ‫نوعی‬ ‫واقع‬ ‫در‬ ‫پشته‬
:
1
.
‫دارد‬ ‫گر‬ ‫اشاره‬ ‫متغیر‬ ‫یک‬
2
.
‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫نگهداری‬ ‫قابل‬ ‫عناصر‬ ‫تعداد‬ ‫بیشترین‬ ‫که‬ ‫دارد‬ ‫متغیر‬ ‫یک‬
3
.
‫است‬ ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫ی‬ ‫دهنده‬ ‫نشان‬ ‫شرط‬
‫پشته‬ ‫بودن‬ ‫پر‬ ‫یا‬ ‫خالی‬ ‫شرط‬ ‫بررسی‬
ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫است‬ ‫تابع‬ ‫نوعی‬ ‫واقع‬ ‫در‬ ‫پشته‬
‫که‬
:
1
.
‫گر‬ ‫اشاره‬ ‫متغیر‬ ‫یک‬
‫دارد‬
2
.
‫متغیر‬ ‫یک‬
‫عناصر‬ ‫تعداد‬ ‫بیشترین‬ ‫که‬ ‫دارد‬
‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫نگهداری‬ ‫قابل‬
3
.
‫شرط‬
‫پشته‬ ‫بودن‬ ‫خالی‬ ‫ی‬ ‫دهنده‬ ‫نشان‬
‫است‬
top
MAXSTACK
top= = -1
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫که‬ ‫است‬ ‫تابع‬ ‫نوعی‬ ‫واقع‬ ‫در‬ ‫پشته‬
:
1
.
‫دارد‬ ‫گر‬ ‫اشاره‬ ‫متغیر‬ ‫یک‬
2
.
‫تعداد‬ ‫بیشترین‬ ‫که‬ ‫دارد‬ ‫متغیر‬ ‫یک‬
‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫نگهداری‬ ‫قابل‬ ‫عناصر‬
3
.
‫پشته‬ ‫بودن‬ ‫خالی‬ ‫ی‬ ‫دهنده‬ ‫نشان‬ ‫شرط‬
‫است‬
top
MAXSTACK
top= = -1
‫و‬ ‫توابع‬ ‫سازی‬ ‫پیاده‬
POP Push
void Push (int *top , elementtype item)
{ /* Add an item to the stack */
if (*top > = (MAXSTACK – 1))
{
Stackful () ; // return an error key
return ;
}
stack [ + + *top]=item;
}
elementtype POP (int * top)
{
// return the top element from the stack
if (*top = = - 1)
return stack empty () ; //rerurn an error key
return stack [(*top) - - ] ;
}
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫که‬ ‫است‬ ‫تابع‬ ‫نوعی‬ ‫واقع‬ ‫در‬ ‫پشته‬
:
1
.
‫دارد‬ ‫گر‬ ‫اشاره‬ ‫متغیر‬ ‫یک‬
2
.
‫تعداد‬ ‫بیشترین‬ ‫که‬ ‫دارد‬ ‫متغیر‬ ‫یک‬
‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫نگهداری‬ ‫قابل‬ ‫عناصر‬
3
.
‫پشته‬ ‫بودن‬ ‫خالی‬ ‫ی‬ ‫دهنده‬ ‫نشان‬ ‫شرط‬
‫است‬
top
MAXSTACK
top= = -1
‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬
:
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
STACK
n = n1+n2
B A
‫و‬ ‫های‬ ‫عملگر‬ ‫باید‬ ‫باال‬ ‫روش‬ ‫از‬ ‫استفاده‬ ‫هنگام‬
‫شوند‬ ‫نویسی‬ ‫باز‬ ‫دوباره‬
POP Push
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬
:
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
STACK
n = n1+n2
B A
‫و‬ ‫های‬ ‫عملگر‬ ‫باید‬ ‫باال‬ ‫روش‬ ‫از‬ ‫استفاده‬ ‫هنگام‬
‫شوند‬ ‫نویسی‬ ‫باز‬ ‫دوباره‬
POP Push
void Push (int i , elementtype item)
{
if ( h[i] = = L[ i + 1] )
stackfull();
else
{
h[i] = h[i] +1 ;
stack [h[i]] = item ;
}
void POP (int i , elementtype * item)
{
if (L[i] = = h[i])
stackempty() ;
else
{
*item = stack [h[i]]‫ک‬
h[i] = h[i] -1 ;
}
}
void POP (int i , elementtype * item)
{
if (L[i] = = h[i])
stackempty() ;
else
{
*item = stack [h[i]]‫ک‬
h[i] = h[i] -1 ;
}
}
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫چند‬ ‫های‬ ‫پشته‬
‫گانه‬
:
‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬
‫نام‬ ‫به‬ ‫آرایه‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬
‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
‫کنیم‬ ‫می‬ ‫تعریف‬
STACK
n = n1+n2
B A
1
.
‫خوانی‬ ‫فرا‬ ‫در‬ ‫پشته‬ ‫کاربرد‬
‫تابع‬
2
.
‫ارزیابی‬ ‫در‬ ‫پشته‬ ‫کاربرد‬
‫اطالعات‬
void POP (int i , elementtype * item)
{
if (L[i] = = h[i])
stackempty() ;
else
{
*item = stack [h[i]]‫ک‬
h[i] = h[i] -1 ;
} }
‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬
:
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
STACK
n = n1+n2
B A
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
void POP (int i , elementtype * item)
{
if (L[i] = = h[i])
stackempty() ;
else
{
*item = stack [h[i]]‫ک‬
h[i] = h[i] -1 ;
} }
‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬
:
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
STACK
n = n1+n2
B A
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
1
.
‫فرا‬ ‫در‬ ‫پشته‬ ‫کاربرد‬
‫تابع‬ ‫خوانی‬
2
.
‫در‬ ‫پشته‬ ‫کاربرد‬
‫اطالعات‬ ‫ارزیابی‬
2
.
‫در‬ ‫پشته‬ ‫کاربرد‬
‫اطالعات‬ ‫ارزیابی‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
1
.
‫فرا‬ ‫در‬ ‫پشته‬ ‫کاربرد‬
‫تابع‬ ‫خوانی‬
2
.
‫در‬ ‫پشته‬ ‫کاربرد‬
‫اطالعات‬ ‫ارزیابی‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
infix
prefix
postfix
AB+ +AB A+B
:
2
.
‫در‬ ‫پشته‬ ‫کاربرد‬
‫اطالعات‬ ‫ارزیابی‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
infix
prefix
postfix
AB+
+AB
A+B
1
.
‫پیشوندی‬ ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
‫دستی‬ ‫روش‬ ‫به‬
2
.
‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬
‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
:
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
infix
prefix
postfix
AB+
+AB
A+B
1
.
‫اولویت‬ ‫به‬ ‫توجه‬ ‫با‬ ‫را‬ ‫میانوندی‬ ‫عبارت‬ ‫ابتدا‬
‫کنیم‬ ‫می‬ ‫گذاری‬ ‫پرانتز‬ ‫ها‬ ‫عملگر‬
2
.
‫می‬ ‫انتقال‬ ‫خودش‬ ‫پراتز‬ ‫بسته‬ ‫سمت‬ ‫به‬ ‫را‬ ‫عملگر‬ ‫هر‬
‫دهیم‬
3
.
‫کنیم‬ ‫می‬ ‫حذف‬ ‫را‬ ‫ها‬ ‫پرانتز‬ ‫تمام‬
1
.
‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬
2
.
‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬
‫پشته‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
:
:
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
1
.
‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
2
.
‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬
‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ ‫های‬ ‫عبارت‬
‫پشته‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
:
:
:
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
1
.
‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
2
.
‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
:
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
1
.
‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
‫به‬ ‫پیشوندی‬ ‫و‬ ‫پسوندی‬ ‫به‬
‫دستی‬ ‫روش‬
2
.
‫های‬ ‫عبارت‬ ‫تبدیل‬
‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬
‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬
‫پشته‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
‫مسائل‬ ‫حل‬ ‫در‬ ‫پشته‬ ‫از‬ ‫تونا‬ ‫کی‬ ‫چگونه‬
‫کرد؟‬ ‫استفاده‬ ‫ریاضی‬
1
.
‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬
2
.
‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬
‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
void POP (int i , elementtype * item)
{
if (L[i] = = h[i])
stackempty() ;
else
{
*item = stack [h[i]]‫ک‬
h[i] = h[i] -1 ;
} }
‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬
:
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
STACK
n = n1+n2
B A
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
1
.
‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬
2
.
‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬
‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
void POP (int i , elementtype * item)
{
if (L[i] = = h[i])
stackempty() ;
else
{
*item = stack [h[i]]‫ک‬
h[i] = h[i] -1 ;
} }
‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬
:
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
STACK
n = n1+n2
B A
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫توان‬ ‫می‬ ‫چگونه‬
‫از‬
‫مسائل‬ ‫حل‬ ‫در‬ ‫پشته‬
‫کرد؟‬ ‫استفاده‬ ‫ریاضی‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫در‬ ‫پشته‬ ‫از‬ ‫توان‬ ‫می‬ ‫چگونه‬
‫استفاده‬ ‫ریاضی‬ ‫مسائل‬ ‫حل‬
‫کرد؟‬
‫که‬ ‫کنیم‬ ‫حاصل‬ ‫اطمینان‬ ‫خواهیم‬ ‫می‬ ‫اکنون‬
‫به‬ ‫رو‬ ‫به‬ ‫رو‬ ‫ریاضی‬ ‫عبارت‬ ‫در‬ ‫ها‬ ‫پرانتز‬
‫اند‬ ‫شده‬ ‫داده‬ ‫قرار‬ ‫درستی‬
1
.
‫باید‬ ‫بسته‬ ‫و‬ ‫باز‬ ‫های‬ ‫پرانتز‬ ‫تعداد‬
‫باشند‬ ‫برابر‬ ‫هم‬ ‫با‬
2
.
‫پرانتز‬ ‫یک‬ ‫با‬ ‫باید‬ ‫باز‬ ‫پرانتز‬ ‫هر‬
‫باشه‬ ‫داشته‬ ‫مطابقت‬ ‫بسته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬ ‫در‬ ‫پشته‬ ‫از‬ ‫توان‬ ‫می‬ ‫چگونه‬
‫استفاده‬ ‫ریاضی‬ ‫مسائل‬ ‫حل‬
‫کرد؟‬
1
.
‫برابر‬ ‫هم‬ ‫با‬ ‫باید‬ ‫بسته‬ ‫و‬ ‫باز‬ ‫های‬ ‫پرانتز‬ ‫تعداد‬
‫باشند‬
2
.
‫مطابقت‬ ‫بسته‬ ‫پرانتز‬ ‫یک‬ ‫با‬ ‫باید‬ ‫باز‬ ‫پرانتز‬ ‫هر‬
‫باشه‬ ‫داشته‬
valid = true;
S = the empty stack ;
while (we have not read the entire string)
{
read the next symbol of the string;
if (( symb == " (" ) || (symb = =" [") || (symb = = "{"))
Push (s,symb);
if ((symb = = ")" ) || (symb = = "]" ) || (symb = = "}" ))
if (empty (s))
valid = false;
else
I = POP(s);
if (i is not the matching operator of symb)
valid= false ;
if (! empty (S))
valid = false;
if (valid)
Print the string is valid ;
else print the string is invalid
}
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫پشته‬ ‫معایب‬ ‫و‬ ‫مزایا‬
:
‫توان‬ ‫می‬ ‫پشته‬ ‫مزایای‬ ‫از‬
‫پیچیدگی‬ ‫بودن‬ ‫پایین‬ ‫به‬
‫زمانی‬
‫به‬ ‫توان‬ ‫می‬ ‫آن‬ ‫معایب‬ ‫از‬ ‫و‬
‫جو‬ ‫و‬ ‫جست‬ ‫عملگر‬ ‫وجود‬ ‫عدم‬
‫حذف‬ ‫و‬ ‫مناسب‬ ‫جای‬ ‫در‬ ‫درج‬ ‫و‬
‫کرد‬ ‫اشاره‬ ‫دلخواه‬
1
.
‫پشته‬ ‫کالس‬ ‫طراحی‬ 2
.
‫پشته‬ ‫کالس‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ ‫معایب‬ ‫و‬ ‫مزایا‬
:
‫زمانی‬ ‫پیچیدگی‬ ‫بودن‬ ‫پایین‬ ‫به‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫مزایای‬ ‫از‬
‫جای‬ ‫در‬ ‫درج‬ ‫و‬ ‫جو‬ ‫و‬ ‫جست‬ ‫عملگر‬ ‫وجود‬ ‫عدم‬ ‫به‬ ‫توان‬ ‫می‬ ‫آن‬ ‫معایب‬ ‫از‬ ‫و‬
‫کرد‬ ‫اشاره‬ ‫دلخواه‬ ‫حذف‬ ‫و‬ ‫مناسب‬
1
.
‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬
2
.
‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬
‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
void POP (int i , elementtype * item)
{
if (L[i] = = h[i])
stackempty() ;
else
{
*item = stack [h[i]]‫ک‬
h[i] = h[i] -1 ;
} }
‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬
:
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
STACK
n = n1+n2
B A
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫پشته‬ ‫معایب‬ ‫و‬ ‫مزایا‬
:
‫زمانی‬ ‫پیچیدگی‬ ‫بودن‬ ‫پایین‬ ‫به‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫مزایای‬ ‫از‬
‫جای‬ ‫در‬ ‫درج‬ ‫و‬ ‫جو‬ ‫و‬ ‫جست‬ ‫عملگر‬ ‫وجود‬ ‫عدم‬ ‫به‬ ‫توان‬ ‫می‬ ‫آن‬ ‫معایب‬ ‫از‬ ‫و‬
‫کرد‬ ‫اشاره‬ ‫دلخواه‬ ‫حذف‬ ‫و‬ ‫مناسب‬
1
.
‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬
2
.
‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬
‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
void POP (int i , elementtype * item)
{
if (L[i] = = h[i])
stackempty() ;
else
{
*item = stack [h[i]]‫ک‬
h[i] = h[i] -1 ;
} }
‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬
:
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
STACK
n = n1+n2
B A
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
1
.
‫پشته‬ ‫کالس‬ ‫طراحی‬
2
.
‫کالس‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
1
.
‫کالس‬ ‫طراحی‬
‫پشته‬
2
.
‫پشته‬ ‫کالس‬ ‫سازی‬ ‫پیاده‬
Create
Empty
Push POP
Top
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
1
.
‫پشته‬ ‫کالس‬ ‫طراحی‬
2
.
‫سازی‬ ‫پیاده‬
‫پشته‬ ‫کالس‬
‫است‬ ‫مرحله‬ ‫دو‬ ‫شامل‬
:
1
.
‫شیء‬ ‫نمایش‬ ‫برای‬ ‫ای‬ ‫داده‬ ‫اعضای‬ ‫تعریف‬
‫پشته‬
2
.
‫طراحی‬ ‫مرحله‬ ‫در‬ ‫که‬ ‫عملیاتی‬ ‫تعریف‬
‫شود‬ ‫شناسایی‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
2
.
‫سازی‬ ‫پیاده‬
‫پشته‬ ‫کالس‬
‫است‬ ‫مرحله‬ ‫دو‬ ‫شامل‬
:
1
.
‫برای‬ ‫ای‬ ‫داده‬ ‫اعضای‬ ‫تعریف‬
‫پشته‬ ‫شیء‬ ‫نمایش‬
2
.
‫طراحی‬ ‫مرحله‬ ‫در‬ ‫که‬ ‫عملیاتی‬ ‫تعریف‬
‫شود‬ ‫شناسایی‬
‫نظر‬ ‫در‬ ‫پشته‬ ‫برای‬ ‫ای‬ ‫داده‬ ‫عضو‬ ‫دو‬
‫گیریم‬ ‫می‬
:
-
‫را‬ ‫پشته‬ ‫عناصر‬ ‫که‬ ‫ای‬ ‫آرایه‬
‫کند‬ ‫ذخیره‬
-
‫را‬ ‫پشته‬ ‫باالی‬ ‫که‬ ‫صحیح‬ ‫متغیر‬ ‫یک‬
‫کند‬ ‫می‬ ‫ذخیره‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
2
.
‫سازی‬ ‫پیاده‬
‫پشته‬ ‫کالس‬
‫است‬ ‫مرحله‬ ‫دو‬ ‫شامل‬
:
1
.
‫شیء‬ ‫نمایش‬ ‫برای‬ ‫ای‬ ‫داده‬ ‫اعضای‬ ‫تعریف‬
‫پشته‬
2
.
‫مرحله‬ ‫در‬ ‫که‬ ‫عملیاتی‬ ‫تعریف‬
‫شود‬ ‫شناسایی‬ ‫طراحی‬
‫پشته‬ ‫کالس‬ ‫عضو‬ ‫توابع‬
:
:
‫می‬ ‫ایجاد‬ ‫را‬ ‫خالی‬ ‫پشته‬
‫کند‬Stuck()
:
‫می‬ ‫بررسی‬ ‫را‬ ‫پشته‬ ‫بودن‬ ‫خالی‬
‫کند‬Empty()
:
‫اضافه‬ ‫پشته‬ ‫باالی‬ ‫در‬ ‫را‬ ‫عنصری‬
‫کند‬ ‫می‬Push()
:
‫کند‬ ‫می‬ ‫حذف‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬
POP()
:
‫می‬ ‫بازیابی‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬
‫کند‬Top()
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
2
.
‫سازی‬ ‫پیاده‬
‫پشته‬ ‫کالس‬
‫است‬ ‫مرحله‬ ‫دو‬ ‫شامل‬
:
1
.
‫شیء‬ ‫نمایش‬ ‫برای‬ ‫ای‬ ‫داده‬ ‫اعضای‬ ‫تعریف‬
‫پشته‬
2
.
‫طراحی‬ ‫مرحله‬ ‫در‬ ‫که‬ ‫عملیاتی‬ ‫تعریف‬
‫شود‬ ‫شناسایی‬
‫پشته‬ ‫کالس‬ ‫عضو‬ ‫توابع‬
:
:
‫می‬ ‫ایجاد‬ ‫را‬ ‫خالی‬ ‫پشته‬
‫کند‬Stuck()
:
‫می‬ ‫بررسی‬ ‫را‬ ‫پشته‬ ‫بودن‬ ‫خالی‬
‫کند‬Empty()
:
‫اضافه‬ ‫پشته‬ ‫باالی‬ ‫در‬ ‫را‬ ‫عنصری‬
‫کند‬ ‫می‬Push()
:
‫کند‬ ‫می‬ ‫حذف‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬
POP()
:
‫می‬ ‫بازیابی‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬
‫کند‬Top()
:
‫می‬ ‫نمایش‬ ‫را‬ ‫پشته‬ ‫محتویات‬
‫دهد‬Display()
# define size 5
class stack {
public:
stack () ;
int empty () ;
void Push (int x) ;
int POP () ;
int top () ;
void display () ;
private:
int myTop ;
int item[size] ;
}
*/
‫پشته‬ ‫کالس‬ ‫تعریف‬
/*
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
# define size 5
class stack {
public:
stack () ;
int empty () ;
void Push (int x) ;
int POP () ;
int top () ;
void display () ;
private:
int myTop ;
int item[size] ;
}
*/
‫پشته‬ ‫کالس‬ ‫تعریف‬
/*
3
.
‫سازی‬ ‫پیاده‬
‫پشته‬ ‫عمل‬
4
.
‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ ‫بودن‬ ‫خالی‬
5
.
‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
6
.
‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ ‫افزونه‬
7
.
‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ ‫از‬ ‫بازیابی‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
Stack:: stack ()
{
MyTop = -1 ;
}
3
.
‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
4
.
‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
5
.
‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
6
.
‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
7
.
‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
int stack:: empty ()
{
return (myTop = = -1);
}
3
.
‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
4
.
‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ ‫بودن‬5
.
‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
6
.
‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
7
.
‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
3
.
‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
4
.
‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
5
.
‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ 6
.
‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
7
.
‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
-
‫پیام‬ ‫باشد‬ ‫خالی‬ ‫پشته‬ ‫اگر‬
‫ی‬ ‫خاتمه‬ ‫بعد‬ ‫و‬ ‫شده‬ ‫چاپ‬ ‫انتظار‬
‫برنامه‬
-
‫کند‬ ‫می‬ ‫حذف‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬
-
‫به‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬
‫گرداند‬ ‫می‬ ‫بر‬ ‫فراخواننده‬
int stack:: POP ()
}
if (empty ()){
cout<< "stack is empty" ;
exit () ;
}
else
return items [myTop-- ] ;
}
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
3
.
‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
4
.
‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
5
.
‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
6
.
‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ ‫افزونه‬ 7
.
‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
void stack:: Push(int x)
}
if (my top = = size – 1){
cout << stack is full. Press any key …" ;
getch ();
exit();
}
else
return item [my top] ;}
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
3
.
‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
4
.
‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
5
.
‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
6
.
‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
7
.
‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ ‫از‬ ‫بازیابی‬
int stack:: top ()
}
if (empty (s)){
cout << "stack is empty. Press key.." ;
getch ();
exit();
}
else
return item [my top] ;}
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
1
.
‫پشته‬ ‫کالس‬ ‫طراحی‬
2
.
‫کالس‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
3
.
‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
4
.
‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
5
.
‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
6
.
‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬
7
.
‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ ‫از‬
1
.
‫پشته‬ ‫کالس‬ ‫طراحی‬
2
.
‫پشته‬ ‫کالس‬ ‫سازی‬ ‫پیاده‬
3
.
‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
4
.
‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
5
.
‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
6
.
‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 7
.
‫پشته‬ ‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬
‫پشته‬ ‫معایب‬ ‫و‬ ‫مزایا‬
:
‫زمانی‬ ‫پیچیدگی‬ ‫بودن‬ ‫پایین‬ ‫به‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫مزایای‬ ‫از‬
‫جای‬ ‫در‬ ‫درج‬ ‫و‬ ‫جو‬ ‫و‬ ‫جست‬ ‫عملگر‬ ‫وجود‬ ‫عدم‬ ‫به‬ ‫توان‬ ‫می‬ ‫آن‬ ‫معایب‬ ‫از‬ ‫و‬
‫کرد‬ ‫اشاره‬ ‫دلخواه‬ ‫حذف‬ ‫و‬ ‫مناسب‬
1
.
‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬
‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬
2
.
‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬
‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬
3
.
‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
void POP (int i , elementtype * item)
{
if (L[i] = = h[i])
stackempty() ;
else
{
*item = stack [h[i]]‫ک‬
h[i] = h[i] -1 ;
} }
‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬
:
‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬
‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬
‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬
STACK
n = n1+n2
B A
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬
‫تعریف‬
‫پشته‬
Stack
‫مقدمه‬
‫سازی‬ ‫پیاده‬
‫عملگرها‬
‫از‬ ‫هایی‬ ‫کاربرد‬
‫پشته‬
‫درستی‬ ‫ارزیابی‬
‫ها‬ ‫پرانتز‬
‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
StackPresentation.pptx

More Related Content

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

StackPresentation.pptx

  • 1. Data structures Stack Mohamad Ali Naseri Soheil Hosseini Superviser: Leila Pashaie
  • 2. ‫هایی‬ ‫محدودیت‬ ‫با‬ ‫ولی‬ ‫آرایه‬ ‫همانند‬ ، ‫پشته‬ ‫اضافه‬ ‫و‬ ‫حذف‬ ‫در‬ ‫مفید‬ Stack ‫مقدمه‬ ‫تعریف‬ ‫پشته‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
  • 3. Stack ‫مقدمه‬ ‫تعریف‬ ‫پشته‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ ‫همانند‬ ، ‫پشته‬ ‫با‬ ‫ولی‬ ‫آرایه‬ ‫هایی‬ ‫محدودیت‬ ‫و‬ ‫حذف‬ ‫در‬ ‫مفید‬ ‫اضافه‬
  • 4. ‫گیرد‬ ‫می‬ ‫صورت‬ ‫آن‬ ‫در‬ ‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬ ‫از‬ ‫تنها‬ ‫که‬ ‫است‬ ‫ای‬ ‫داده‬ ‫ساختار‬ ‫در‬ ‫مفید‬ ‫هایی‬ ‫محدودیت‬ ‫با‬ ‫ولی‬ ‫آرایه‬ ‫همانند‬ ، ‫پشته‬ ‫اضافه‬ ‫و‬ ‫حذف‬ Stack ‫مقدمه‬ ‫تعریف‬ ‫پشته‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
  • 5. Stack ‫مقدمه‬ ‫تعریف‬ ‫پشته‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ ‫ای‬ ‫داده‬ ‫ساختار‬ ‫از‬ ‫تنها‬ ‫که‬ ‫است‬ ‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬ ‫می‬ ‫صورت‬ ‫آن‬ ‫در‬ ‫گیرد‬
  • 6. ‫تعریف‬ ‫پشته‬ ‫ای‬ ‫داده‬ ‫ساختار‬ ‫از‬ ‫تنها‬ ‫که‬ ‫است‬ ‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬ ‫می‬ ‫صورت‬ ‫آن‬ ‫در‬ ‫گیرد‬ ‫عنصر‬ ‫تنها‬ ‫پشته‬ ‫این‬ ‫در‬ ( 3 ) ‫می‬ ‫دسترس‬ ‫قابل‬ ‫باشد‬
  • 7. ‫تعریف‬ ‫پشته‬ ‫ای‬ ‫داده‬ ‫ساختار‬ ‫از‬ ‫تنها‬ ‫که‬ ‫است‬ ‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬ ‫می‬ ‫صورت‬ ‫آن‬ ‫در‬ ‫گیرد‬ N ‫پشته‬ ‫یک‬ ‫نمایش‬ ‫برای‬ ‫راه‬ ‫ترین‬ ‫ساده‬ : ‫ساخت‬ ‫طول‬ ‫به‬ ‫بعدی‬ ‫یک‬ ‫ای‬ ‫آرایه‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫نام‬ ‫به‬ ‫متغیری‬ ‫این‬ ‫کنار‬ ‫در‬ ‫دارد‬ ‫اشاره‬ ‫آن‬ ‫باالیی‬ ‫عنصر‬ ‫به‬ top POP Push ‫حذف‬ ‫عنصر‬ ‫عنصر‬ ‫اضافه‬
  • 8. Stack ‫مقدمه‬ ‫تعریف‬ ‫پشته‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ LIFO = Last Input First Output
  • 9. ‫را‬ ‫آن‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫عملکرد‬ ‫به‬ ‫توجه‬ ‫با‬ ‫کرد‬ ‫تعریف‬ ‫انتزاعی‬ ‫داده‬ ‫یک‬ ‫صورت‬ ‫به‬ LIFO = Last Input First Output ‫گیرد‬ ‫می‬ ‫صورت‬ ‫آن‬ ‫در‬ ‫اضافه‬ ‫و‬ ‫حذف‬ ‫باال‬ ‫از‬ ‫تنها‬ ‫که‬ ‫است‬ ‫ای‬ ‫داده‬ ‫ساختار‬ Stack ‫مقدمه‬ ‫تعریف‬ ‫پشته‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
  • 10. Stack ‫مقدمه‬ ‫تعریف‬ ‫پشته‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ ‫عملکرد‬ ‫به‬ ‫توجه‬ ‫با‬ ‫آن‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫یک‬ ‫صورت‬ ‫به‬ ‫را‬ ‫انتزاعی‬ ‫داده‬ ‫کرد‬ ‫تعریف‬
  • 11. ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫عملکرد‬ ‫به‬ ‫توجه‬ ‫با‬ ‫آن‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫یک‬ ‫صورت‬ ‫به‬ ‫را‬ ‫انتزاعی‬ ‫داده‬ ‫کرد‬ ‫تعریف‬ 1 . ‫اقالم‬ ‫مجموعه‬ : ‫از‬ ‫فقط‬ ‫که‬ ‫عناصری‬ ‫مجموعه‬ ‫هستند‬ ‫دسترسی‬ ‫قابل‬ top
  • 12. ‫خالی‬ ‫پشته‬ ‫یک‬ ‫کند‬ ‫می‬ ‫ایجاد‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ 1 . ‫اقالم‬ ‫مجموعه‬ : ‫از‬ ‫فقط‬ ‫که‬ ‫عناصری‬ ‫مجموعه‬ ‫هستند‬ ‫دسترسی‬ ‫قابل‬ top 2 . ‫عملیات‬ : Create ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عملیات‬ ‫دهد‬ ‫می‬ ‫انجام‬ ‫را‬ Empty ‫پشته‬ ‫باالی‬ ‫به‬ ‫عنصری‬ ‫افزودن‬ ‫عمل‬ ‫دهد‬ ‫می‬ ‫انجام‬ ‫رو‬ Push ‫پشته‬ ‫باالی‬ ‫از‬ ‫حذف‬ ‫عمل‬ ‫دهد‬ ‫می‬ ‫انجام‬ ‫را‬ POP ‫باالی‬ ‫عنصر‬ ‫به‬ ‫دارد‬ ‫اشاره‬ ‫پشته‬ Top
  • 13. ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬ Typedef struct { int key ; /* other fields */ } elementtype ; Elementtype stack[MAXSTACK];
  • 14. ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬ Typedef struct { int key ; /* other fields */ } elementtype ; Elementtype stack[MAXSTACK]; ‫پر‬ ‫یا‬ ‫خالی‬ ‫شرط‬ ‫بررسی‬ ‫پشته‬ ‫بودن‬
  • 15. ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬ */ ‫بودن‬ ‫خالی‬ ‫شرط‬ /* if (top = -1 ) Cout<<“Stack is empty ; /* ‫بودن‬ ‫پر‬ ‫*شرط‬/ if (top == MAXSTACK ) Cout<<“Stack is full”; ‫پر‬ ‫یا‬ ‫خالی‬ ‫شرط‬ ‫بررسی‬ ‫پشته‬ ‫بودن‬
  • 16. Stack ‫مقدمه‬ ‫تعریف‬ ‫پشته‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬ */ ‫بودن‬ ‫خالی‬ ‫شرط‬ /* if (top = -1 ) Cout<<“Stack is empty ; /* ‫بودن‬ ‫پر‬ ‫*شرط‬/ if (top == MAXSTACK ) Cout<<“Stack is full”; ‫پر‬ ‫یا‬ ‫خالی‬ ‫شرط‬ ‫بررسی‬ ‫پشته‬ ‫بودن‬
  • 17. top MAXSTACK top= = -1 ‫که‬ ‫است‬ ‫تابع‬ ‫نوعی‬ ‫واقع‬ ‫در‬ ‫پشته‬ : 1 . ‫دارد‬ ‫گر‬ ‫اشاره‬ ‫متغیر‬ ‫یک‬ 2 . ‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫نگهداری‬ ‫قابل‬ ‫عناصر‬ ‫تعداد‬ ‫بیشترین‬ ‫که‬ ‫دارد‬ ‫متغیر‬ ‫یک‬ 3 . ‫است‬ ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫ی‬ ‫دهنده‬ ‫نشان‬ ‫شرط‬ ‫پشته‬ ‫بودن‬ ‫پر‬ ‫یا‬ ‫خالی‬ ‫شرط‬ ‫بررسی‬ ADT‫این‬ ‫سازیه‬ ‫پیاده‬ ‫برای‬ ‫روش‬ ‫ترین‬ ‫ساده‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
  • 18. ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ ‫است‬ ‫تابع‬ ‫نوعی‬ ‫واقع‬ ‫در‬ ‫پشته‬ ‫که‬ : 1 . ‫گر‬ ‫اشاره‬ ‫متغیر‬ ‫یک‬ ‫دارد‬ 2 . ‫متغیر‬ ‫یک‬ ‫عناصر‬ ‫تعداد‬ ‫بیشترین‬ ‫که‬ ‫دارد‬ ‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫نگهداری‬ ‫قابل‬ 3 . ‫شرط‬ ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫ی‬ ‫دهنده‬ ‫نشان‬ ‫است‬ top MAXSTACK top= = -1
  • 19. ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫که‬ ‫است‬ ‫تابع‬ ‫نوعی‬ ‫واقع‬ ‫در‬ ‫پشته‬ : 1 . ‫دارد‬ ‫گر‬ ‫اشاره‬ ‫متغیر‬ ‫یک‬ 2 . ‫تعداد‬ ‫بیشترین‬ ‫که‬ ‫دارد‬ ‫متغیر‬ ‫یک‬ ‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫نگهداری‬ ‫قابل‬ ‫عناصر‬ 3 . ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫ی‬ ‫دهنده‬ ‫نشان‬ ‫شرط‬ ‫است‬ top MAXSTACK top= = -1 ‫و‬ ‫توابع‬ ‫سازی‬ ‫پیاده‬ POP Push void Push (int *top , elementtype item) { /* Add an item to the stack */ if (*top > = (MAXSTACK – 1)) { Stackful () ; // return an error key return ; } stack [ + + *top]=item; } elementtype POP (int * top) { // return the top element from the stack if (*top = = - 1) return stack empty () ; //rerurn an error key return stack [(*top) - - ] ; }
  • 20. ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫که‬ ‫است‬ ‫تابع‬ ‫نوعی‬ ‫واقع‬ ‫در‬ ‫پشته‬ : 1 . ‫دارد‬ ‫گر‬ ‫اشاره‬ ‫متغیر‬ ‫یک‬ 2 . ‫تعداد‬ ‫بیشترین‬ ‫که‬ ‫دارد‬ ‫متغیر‬ ‫یک‬ ‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫نگهداری‬ ‫قابل‬ ‫عناصر‬ 3 . ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫ی‬ ‫دهنده‬ ‫نشان‬ ‫شرط‬ ‫است‬ top MAXSTACK top= = -1 ‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬ : ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ STACK n = n1+n2 B A ‫و‬ ‫های‬ ‫عملگر‬ ‫باید‬ ‫باال‬ ‫روش‬ ‫از‬ ‫استفاده‬ ‫هنگام‬ ‫شوند‬ ‫نویسی‬ ‫باز‬ ‫دوباره‬ POP Push
  • 21. ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬ : ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ STACK n = n1+n2 B A ‫و‬ ‫های‬ ‫عملگر‬ ‫باید‬ ‫باال‬ ‫روش‬ ‫از‬ ‫استفاده‬ ‫هنگام‬ ‫شوند‬ ‫نویسی‬ ‫باز‬ ‫دوباره‬ POP Push void Push (int i , elementtype item) { if ( h[i] = = L[ i + 1] ) stackfull(); else { h[i] = h[i] +1 ; stack [h[i]] = item ; } void POP (int i , elementtype * item) { if (L[i] = = h[i]) stackempty() ; else { *item = stack [h[i]]‫ک‬ h[i] = h[i] -1 ; } }
  • 22. void POP (int i , elementtype * item) { if (L[i] = = h[i]) stackempty() ; else { *item = stack [h[i]]‫ک‬ h[i] = h[i] -1 ; } } ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ ‫چند‬ ‫های‬ ‫پشته‬ ‫گانه‬ : ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ STACK n = n1+n2 B A
  • 23. 1 . ‫خوانی‬ ‫فرا‬ ‫در‬ ‫پشته‬ ‫کاربرد‬ ‫تابع‬ 2 . ‫ارزیابی‬ ‫در‬ ‫پشته‬ ‫کاربرد‬ ‫اطالعات‬ void POP (int i , elementtype * item) { if (L[i] = = h[i]) stackempty() ; else { *item = stack [h[i]]‫ک‬ h[i] = h[i] -1 ; } } ‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬ : ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ STACK n = n1+n2 B A ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
  • 24. void POP (int i , elementtype * item) { if (L[i] = = h[i]) stackempty() ; else { *item = stack [h[i]]‫ک‬ h[i] = h[i] -1 ; } } ‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬ : ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ STACK n = n1+n2 B A ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 1 . ‫فرا‬ ‫در‬ ‫پشته‬ ‫کاربرد‬ ‫تابع‬ ‫خوانی‬ 2 . ‫در‬ ‫پشته‬ ‫کاربرد‬ ‫اطالعات‬ ‫ارزیابی‬
  • 25. 2 . ‫در‬ ‫پشته‬ ‫کاربرد‬ ‫اطالعات‬ ‫ارزیابی‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ 1 . ‫فرا‬ ‫در‬ ‫پشته‬ ‫کاربرد‬ ‫تابع‬ ‫خوانی‬
  • 26. 2 . ‫در‬ ‫پشته‬ ‫کاربرد‬ ‫اطالعات‬ ‫ارزیابی‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ infix prefix postfix AB+ +AB A+B
  • 27. : 2 . ‫در‬ ‫پشته‬ ‫کاربرد‬ ‫اطالعات‬ ‫ارزیابی‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ infix prefix postfix AB+ +AB A+B 1 . ‫پیشوندی‬ ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ ‫دستی‬ ‫روش‬ ‫به‬ 2 . ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬ ‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
  • 28. : ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ infix prefix postfix AB+ +AB A+B 1 . ‫اولویت‬ ‫به‬ ‫توجه‬ ‫با‬ ‫را‬ ‫میانوندی‬ ‫عبارت‬ ‫ابتدا‬ ‫کنیم‬ ‫می‬ ‫گذاری‬ ‫پرانتز‬ ‫ها‬ ‫عملگر‬ 2 . ‫می‬ ‫انتقال‬ ‫خودش‬ ‫پراتز‬ ‫بسته‬ ‫سمت‬ ‫به‬ ‫را‬ ‫عملگر‬ ‫هر‬ ‫دهیم‬ 3 . ‫کنیم‬ ‫می‬ ‫حذف‬ ‫را‬ ‫ها‬ ‫پرانتز‬ ‫تمام‬ 1 . ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ ‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ 2 . ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬ ‫پشته‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬ :
  • 29. : ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ 1 . ‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ 2 . ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ ‫های‬ ‫عبارت‬ ‫پشته‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬ :
  • 30. : : ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ 1 . ‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ 2 . ‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
  • 31. : ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 1 . ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ ‫به‬ ‫پیشوندی‬ ‫و‬ ‫پسوندی‬ ‫به‬ ‫دستی‬ ‫روش‬ 2 . ‫های‬ ‫عبارت‬ ‫تبدیل‬ ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ ‫پشته‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬
  • 32. ‫مسائل‬ ‫حل‬ ‫در‬ ‫پشته‬ ‫از‬ ‫تونا‬ ‫کی‬ ‫چگونه‬ ‫کرد؟‬ ‫استفاده‬ ‫ریاضی‬ 1 . ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ ‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ 2 . ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬ ‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬ void POP (int i , elementtype * item) { if (L[i] = = h[i]) stackempty() ; else { *item = stack [h[i]]‫ک‬ h[i] = h[i] -1 ; } } ‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬ : ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ STACK n = n1+n2 B A ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
  • 33. 1 . ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ ‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ 2 . ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬ ‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬ void POP (int i , elementtype * item) { if (L[i] = = h[i]) stackempty() ; else { *item = stack [h[i]]‫ک‬ h[i] = h[i] -1 ; } } ‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬ : ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ STACK n = n1+n2 B A ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ ‫توان‬ ‫می‬ ‫چگونه‬ ‫از‬ ‫مسائل‬ ‫حل‬ ‫در‬ ‫پشته‬ ‫کرد؟‬ ‫استفاده‬ ‫ریاضی‬
  • 34. ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫در‬ ‫پشته‬ ‫از‬ ‫توان‬ ‫می‬ ‫چگونه‬ ‫استفاده‬ ‫ریاضی‬ ‫مسائل‬ ‫حل‬ ‫کرد؟‬ ‫که‬ ‫کنیم‬ ‫حاصل‬ ‫اطمینان‬ ‫خواهیم‬ ‫می‬ ‫اکنون‬ ‫به‬ ‫رو‬ ‫به‬ ‫رو‬ ‫ریاضی‬ ‫عبارت‬ ‫در‬ ‫ها‬ ‫پرانتز‬ ‫اند‬ ‫شده‬ ‫داده‬ ‫قرار‬ ‫درستی‬ 1 . ‫باید‬ ‫بسته‬ ‫و‬ ‫باز‬ ‫های‬ ‫پرانتز‬ ‫تعداد‬ ‫باشند‬ ‫برابر‬ ‫هم‬ ‫با‬ 2 . ‫پرانتز‬ ‫یک‬ ‫با‬ ‫باید‬ ‫باز‬ ‫پرانتز‬ ‫هر‬ ‫باشه‬ ‫داشته‬ ‫مطابقت‬ ‫بسته‬
  • 35. ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫در‬ ‫پشته‬ ‫از‬ ‫توان‬ ‫می‬ ‫چگونه‬ ‫استفاده‬ ‫ریاضی‬ ‫مسائل‬ ‫حل‬ ‫کرد؟‬ 1 . ‫برابر‬ ‫هم‬ ‫با‬ ‫باید‬ ‫بسته‬ ‫و‬ ‫باز‬ ‫های‬ ‫پرانتز‬ ‫تعداد‬ ‫باشند‬ 2 . ‫مطابقت‬ ‫بسته‬ ‫پرانتز‬ ‫یک‬ ‫با‬ ‫باید‬ ‫باز‬ ‫پرانتز‬ ‫هر‬ ‫باشه‬ ‫داشته‬ valid = true; S = the empty stack ; while (we have not read the entire string) { read the next symbol of the string; if (( symb == " (" ) || (symb = =" [") || (symb = = "{")) Push (s,symb); if ((symb = = ")" ) || (symb = = "]" ) || (symb = = "}" )) if (empty (s)) valid = false; else I = POP(s); if (i is not the matching operator of symb) valid= false ; if (! empty (S)) valid = false; if (valid) Print the string is valid ; else print the string is invalid }
  • 36. ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ ‫پشته‬ ‫معایب‬ ‫و‬ ‫مزایا‬ : ‫توان‬ ‫می‬ ‫پشته‬ ‫مزایای‬ ‫از‬ ‫پیچیدگی‬ ‫بودن‬ ‫پایین‬ ‫به‬ ‫زمانی‬ ‫به‬ ‫توان‬ ‫می‬ ‫آن‬ ‫معایب‬ ‫از‬ ‫و‬ ‫جو‬ ‫و‬ ‫جست‬ ‫عملگر‬ ‫وجود‬ ‫عدم‬ ‫حذف‬ ‫و‬ ‫مناسب‬ ‫جای‬ ‫در‬ ‫درج‬ ‫و‬ ‫کرد‬ ‫اشاره‬ ‫دلخواه‬
  • 37. 1 . ‫پشته‬ ‫کالس‬ ‫طراحی‬ 2 . ‫پشته‬ ‫کالس‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫معایب‬ ‫و‬ ‫مزایا‬ : ‫زمانی‬ ‫پیچیدگی‬ ‫بودن‬ ‫پایین‬ ‫به‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫مزایای‬ ‫از‬ ‫جای‬ ‫در‬ ‫درج‬ ‫و‬ ‫جو‬ ‫و‬ ‫جست‬ ‫عملگر‬ ‫وجود‬ ‫عدم‬ ‫به‬ ‫توان‬ ‫می‬ ‫آن‬ ‫معایب‬ ‫از‬ ‫و‬ ‫کرد‬ ‫اشاره‬ ‫دلخواه‬ ‫حذف‬ ‫و‬ ‫مناسب‬ 1 . ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ ‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ 2 . ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬ ‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬ void POP (int i , elementtype * item) { if (L[i] = = h[i]) stackempty() ; else { *item = stack [h[i]]‫ک‬ h[i] = h[i] -1 ; } } ‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬ : ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ STACK n = n1+n2 B A ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
  • 38. ‫پشته‬ ‫معایب‬ ‫و‬ ‫مزایا‬ : ‫زمانی‬ ‫پیچیدگی‬ ‫بودن‬ ‫پایین‬ ‫به‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫مزایای‬ ‫از‬ ‫جای‬ ‫در‬ ‫درج‬ ‫و‬ ‫جو‬ ‫و‬ ‫جست‬ ‫عملگر‬ ‫وجود‬ ‫عدم‬ ‫به‬ ‫توان‬ ‫می‬ ‫آن‬ ‫معایب‬ ‫از‬ ‫و‬ ‫کرد‬ ‫اشاره‬ ‫دلخواه‬ ‫حذف‬ ‫و‬ ‫مناسب‬ 1 . ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ ‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ 2 . ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬ ‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬ void POP (int i , elementtype * item) { if (L[i] = = h[i]) stackempty() ; else { *item = stack [h[i]]‫ک‬ h[i] = h[i] -1 ; } } ‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬ : ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ STACK n = n1+n2 B A ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 1 . ‫پشته‬ ‫کالس‬ ‫طراحی‬ 2 . ‫کالس‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬
  • 39. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 1 . ‫کالس‬ ‫طراحی‬ ‫پشته‬ 2 . ‫پشته‬ ‫کالس‬ ‫سازی‬ ‫پیاده‬ Create Empty Push POP Top
  • 40. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 1 . ‫پشته‬ ‫کالس‬ ‫طراحی‬ 2 . ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫کالس‬ ‫است‬ ‫مرحله‬ ‫دو‬ ‫شامل‬ : 1 . ‫شیء‬ ‫نمایش‬ ‫برای‬ ‫ای‬ ‫داده‬ ‫اعضای‬ ‫تعریف‬ ‫پشته‬ 2 . ‫طراحی‬ ‫مرحله‬ ‫در‬ ‫که‬ ‫عملیاتی‬ ‫تعریف‬ ‫شود‬ ‫شناسایی‬
  • 41. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 2 . ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫کالس‬ ‫است‬ ‫مرحله‬ ‫دو‬ ‫شامل‬ : 1 . ‫برای‬ ‫ای‬ ‫داده‬ ‫اعضای‬ ‫تعریف‬ ‫پشته‬ ‫شیء‬ ‫نمایش‬ 2 . ‫طراحی‬ ‫مرحله‬ ‫در‬ ‫که‬ ‫عملیاتی‬ ‫تعریف‬ ‫شود‬ ‫شناسایی‬ ‫نظر‬ ‫در‬ ‫پشته‬ ‫برای‬ ‫ای‬ ‫داده‬ ‫عضو‬ ‫دو‬ ‫گیریم‬ ‫می‬ : - ‫را‬ ‫پشته‬ ‫عناصر‬ ‫که‬ ‫ای‬ ‫آرایه‬ ‫کند‬ ‫ذخیره‬ - ‫را‬ ‫پشته‬ ‫باالی‬ ‫که‬ ‫صحیح‬ ‫متغیر‬ ‫یک‬ ‫کند‬ ‫می‬ ‫ذخیره‬
  • 42. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 2 . ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫کالس‬ ‫است‬ ‫مرحله‬ ‫دو‬ ‫شامل‬ : 1 . ‫شیء‬ ‫نمایش‬ ‫برای‬ ‫ای‬ ‫داده‬ ‫اعضای‬ ‫تعریف‬ ‫پشته‬ 2 . ‫مرحله‬ ‫در‬ ‫که‬ ‫عملیاتی‬ ‫تعریف‬ ‫شود‬ ‫شناسایی‬ ‫طراحی‬ ‫پشته‬ ‫کالس‬ ‫عضو‬ ‫توابع‬ : : ‫می‬ ‫ایجاد‬ ‫را‬ ‫خالی‬ ‫پشته‬ ‫کند‬Stuck() : ‫می‬ ‫بررسی‬ ‫را‬ ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫کند‬Empty() : ‫اضافه‬ ‫پشته‬ ‫باالی‬ ‫در‬ ‫را‬ ‫عنصری‬ ‫کند‬ ‫می‬Push() : ‫کند‬ ‫می‬ ‫حذف‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬ POP() : ‫می‬ ‫بازیابی‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬ ‫کند‬Top()
  • 43. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 2 . ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫کالس‬ ‫است‬ ‫مرحله‬ ‫دو‬ ‫شامل‬ : 1 . ‫شیء‬ ‫نمایش‬ ‫برای‬ ‫ای‬ ‫داده‬ ‫اعضای‬ ‫تعریف‬ ‫پشته‬ 2 . ‫طراحی‬ ‫مرحله‬ ‫در‬ ‫که‬ ‫عملیاتی‬ ‫تعریف‬ ‫شود‬ ‫شناسایی‬ ‫پشته‬ ‫کالس‬ ‫عضو‬ ‫توابع‬ : : ‫می‬ ‫ایجاد‬ ‫را‬ ‫خالی‬ ‫پشته‬ ‫کند‬Stuck() : ‫می‬ ‫بررسی‬ ‫را‬ ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫کند‬Empty() : ‫اضافه‬ ‫پشته‬ ‫باالی‬ ‫در‬ ‫را‬ ‫عنصری‬ ‫کند‬ ‫می‬Push() : ‫کند‬ ‫می‬ ‫حذف‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬ POP() : ‫می‬ ‫بازیابی‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬ ‫کند‬Top() : ‫می‬ ‫نمایش‬ ‫را‬ ‫پشته‬ ‫محتویات‬ ‫دهد‬Display() # define size 5 class stack { public: stack () ; int empty () ; void Push (int x) ; int POP () ; int top () ; void display () ; private: int myTop ; int item[size] ; } */ ‫پشته‬ ‫کالس‬ ‫تعریف‬ /*
  • 44. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ # define size 5 class stack { public: stack () ; int empty () ; void Push (int x) ; int POP () ; int top () ; void display () ; private: int myTop ; int item[size] ; } */ ‫پشته‬ ‫کالس‬ ‫تعریف‬ /* 3 . ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫عمل‬ 4 . ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫بودن‬ ‫خالی‬ 5 . ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ 6 . ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫افزونه‬ 7 . ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫از‬ ‫بازیابی‬
  • 45. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ Stack:: stack () { MyTop = -1 ; } 3 . ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ 4 . ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 5 . ‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 6 . ‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 7 . ‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬
  • 46. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ int stack:: empty () { return (myTop = = -1); } 3 . ‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 4 . ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫بودن‬5 . ‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 6 . ‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 7 . ‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬
  • 47. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 3 . ‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 4 . ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 5 . ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ 6 . ‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 7 . ‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ - ‫پیام‬ ‫باشد‬ ‫خالی‬ ‫پشته‬ ‫اگر‬ ‫ی‬ ‫خاتمه‬ ‫بعد‬ ‫و‬ ‫شده‬ ‫چاپ‬ ‫انتظار‬ ‫برنامه‬ - ‫کند‬ ‫می‬ ‫حذف‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬ - ‫به‬ ‫را‬ ‫پشته‬ ‫باالی‬ ‫عنصر‬ ‫گرداند‬ ‫می‬ ‫بر‬ ‫فراخواننده‬ int stack:: POP () } if (empty ()){ cout<< "stack is empty" ; exit () ; } else return items [myTop-- ] ; }
  • 48. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 3 . ‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 4 . ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 5 . ‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 6 . ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫افزونه‬ 7 . ‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ void stack:: Push(int x) } if (my top = = size – 1){ cout << stack is full. Press any key …" ; getch (); exit(); } else return item [my top] ;}
  • 49. ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 3 . ‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 4 . ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 5 . ‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 6 . ‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 7 . ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫از‬ ‫بازیابی‬ int stack:: top () } if (empty (s)){ cout << "stack is empty. Press key.." ; getch (); exit(); } else return item [my top] ;}
  • 50. ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬ 1 . ‫پشته‬ ‫کالس‬ ‫طراحی‬ 2 . ‫کالس‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ 3 . ‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 4 . ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ 5 . ‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 6 . ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ 7 . ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫از‬
  • 51. 1 . ‫پشته‬ ‫کالس‬ ‫طراحی‬ 2 . ‫پشته‬ ‫کالس‬ ‫سازی‬ ‫پیاده‬ 3 . ‫پشته‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 4 . ‫پشته‬ ‫بودن‬ ‫خالی‬ ‫تست‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 5 . ‫پشته‬ ‫حذف‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 6 . ‫پشته‬ ‫افزونه‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ 7 . ‫پشته‬ ‫از‬ ‫بازیابی‬ ‫عمل‬ ‫سازی‬ ‫پیاده‬ ‫پشته‬ ‫معایب‬ ‫و‬ ‫مزایا‬ : ‫زمانی‬ ‫پیچیدگی‬ ‫بودن‬ ‫پایین‬ ‫به‬ ‫توان‬ ‫می‬ ‫پشته‬ ‫مزایای‬ ‫از‬ ‫جای‬ ‫در‬ ‫درج‬ ‫و‬ ‫جو‬ ‫و‬ ‫جست‬ ‫عملگر‬ ‫وجود‬ ‫عدم‬ ‫به‬ ‫توان‬ ‫می‬ ‫آن‬ ‫معایب‬ ‫از‬ ‫و‬ ‫کرد‬ ‫اشاره‬ ‫دلخواه‬ ‫حذف‬ ‫و‬ ‫مناسب‬ 1 . ‫و‬ ‫پسوندی‬ ‫به‬ ‫میانوندی‬ ‫عبارت‬ ‫تبدیل‬ ‫دستی‬ ‫روش‬ ‫به‬ ‫پیشوندی‬ 2 . ‫های‬ ‫عبارت‬ ‫به‬ ‫میانوندی‬ ‫های‬ ‫عبارت‬ ‫تبدیل‬ ‫پشته‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫پسوندی‬ 3 . ‫پسوندی‬ ‫عبارت‬ ‫یک‬ ‫ارزیابی‬ void POP (int i , elementtype * item) { if (L[i] = = h[i]) stackempty() ; else { *item = stack [h[i]]‫ک‬ h[i] = h[i] -1 ; } } ‫گانه‬ ‫چند‬ ‫های‬ ‫پشته‬ : ‫یک‬ ‫پشته‬ ‫دو‬ ‫برای‬ ‫جداگانه‬ ‫ی‬ ‫آرایه‬ ‫دو‬ ‫تعریف‬ ‫جای‬ ‫به‬ ‫ی‬ ‫اندازه‬ ‫به‬ ‫را‬ ‫نام‬ ‫به‬ ‫آرایه‬ ‫کنیم‬ ‫می‬ ‫تعریف‬ ‫و‬ ‫های‬ ‫پشته‬ ‫برای‬ STACK n = n1+n2 B A ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬
  • 52. ‫پشته‬ ‫انتزاعی‬ ‫داده‬ ‫نوع‬ ‫تعریف‬ ‫پشته‬ Stack ‫مقدمه‬ ‫سازی‬ ‫پیاده‬ ‫عملگرها‬ ‫از‬ ‫هایی‬ ‫کاربرد‬ ‫پشته‬ ‫درستی‬ ‫ارزیابی‬ ‫ها‬ ‫پرانتز‬ ‫پشته‬ ‫کالس‬ ‫ساخت‬ ‫و‬ ‫طراحی‬