PDA

View Full Version : سوال: پیاده سازی توابع pop ,push در پشته بدون کلاس



hercool
پنج شنبه 09 دی 1389, 08:28 صبح
با سلام به دوستان
در اینجا دو تا سوال در رابطه با پیاده سازی تابع اضافه کردن یک عنصر به پشته
و پیاده سازی تابع حذف کردن یک عنصر به پشته رو دارم



void push(int *top,elementtype item)
{if (*top>=(maxstack-1))
{stackful(); //return an error key
return;}
stack[++*top]=item;
}



در اینجا سوالاتم مربوط به نواحی رنگی هست
ایا میشه بجای void نوع دیگه ای گذاشت
بعد در رابطه با قسمت اخر ممنون میشم راهنماییم کنید ایا برداشت من درست است
اول یک واحد به اشاره گره top افزوده میشه و بعد ایتم در محلی که اشاره گر تاپ بهش اشاره میکنه ریخته میشه
چرا از اکولاد استفاده کردیم ایا میشد بجای اون از پرانتز استفاده کرد



elementtype pop(int * top)
{
if(*top==-1)
return stack empty();
return stack [(*top)--];
}




در اینجا هم میشه هر نوعی که خواستیم بزاریم حتی void
و در قسمت اخر چرا اول اشاره گر top را داخل پرانتز گذاشتیم بعد بهش دستور کم شدن یک واحد دادیم ؟

wanted_boy_2010
پنج شنبه 09 دی 1389, 09:22 صبح
سلام دوست عزیز. بستگی به خودت داره. اگه پشته رو خودت بنویسی میتونی به غیر از void از خروجی های دیگه هم استفاده کنی.
مثلا از خروجی bool استفاده کنی: اگه عملیات موفقیت آمیز بود true رو برگردونه و در غیر اینصورت false رو برگردونه.

تو این تابعی که نوشتی پشته از نوع آرایه هستش و برای دسترسی به آرایه باید از آکولاد استفاده کنی.

برای اینکه top به خونه ای اشاره می کنه که داخلش مقداره. با این دستور اول مقدار رو برمی گردونه و چون یکی از پشته برداشته با عملگر -- یه خونه می یاد عقب.

امیدوارم که خوب توضیح داده باشم.:قلب: