پياده سازي عمل حذف از پشته
pop() سه وظيفه زير را انجام مي دهد:
1.اگر پشته خالي باشد، پيام اخطار را چاپ كرده اجراي برنامه را خاتمه مي دهد.
2.عنصر بالاي پشته را حذف مي كند.
3.عنصر بالاي پشته را به برنامه فراخوان برمي گرداند.
اين تابع را مي توان به صورت زير پياده سازي كرد (براي پشته نوع صحيح):
int pop(stack *s)
{
if(empty(s))
{
printf("Stack underflow");
exit(1); /* exit from program*/
}
return s -> items[(s -> myTop)--];
}
در حين اجراي برنامه، پس از تشخيص وضعيت خالي بودن پشته، نيازي به توقف اجراي برنامه نيست،بلكه بهتر است تابع pop() سيگنالي به برنامه ي فراخوان بفرستد و برنامه براساس اين سيگنال تصميمات لازم را اتخاذ نمايد سيگنال مي تواند مقداري باشد كه از طريق پارامتر مبادله مي شود. چنين تابعي را popAndTest() ناميده به صورت زير مي نويسيم:
void popAndTest(stack *s, int *x, int *underflow)
{
if(empty(s))
*underflow = 1;
else
{
*x = s -> items[(s -> myTop) --];
*underflow = 0;
}
}
در اين تابع، s پشته و x مقداري است كه توسط تابع برگردانده مي شود و پارامتر underflow به عنوان سيگنال عمل مي كند. برنامه نويس پس از فراخواني تابع، بايد به صورت زير عمل كند:
popAndTest (&s, &x, &underflow);
if(underflow)
/* پشته خالي است كه بايد عمل مناسبي انجام شود */
else
/* x برگردانده مي شود كه مي تواند از آن استفاده كند */
علاقه مندی ها (بوک مارک ها)