پیاده سازی توابع pop ,push در پشته بدون کلاس
با سلام به دوستان
در اینجا دو تا سوال در رابطه با پیاده سازی تابع اضافه کردن یک عنصر به پشته
و پیاده سازی تابع حذف کردن یک عنصر به پشته رو دارم
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 را داخل پرانتز گذاشتیم بعد بهش دستور کم شدن یک واحد دادیم ؟
نقل قول: پیاده سازی توابع pop ,push در پشته بدون کلاس
سلام دوست عزیز. بستگی به خودت داره. اگه پشته رو خودت بنویسی میتونی به غیر از void از خروجی های دیگه هم استفاده کنی.
مثلا از خروجی bool استفاده کنی: اگه عملیات موفقیت آمیز بود true رو برگردونه و در غیر اینصورت false رو برگردونه.
تو این تابعی که نوشتی پشته از نوع آرایه هستش و برای دسترسی به آرایه باید از آکولاد استفاده کنی.
برای اینکه top به خونه ای اشاره می کنه که داخلش مقداره. با این دستور اول مقدار رو برمی گردونه و چون یکی از پشته برداشته با عملگر -- یه خونه می یاد عقب.
امیدوارم که خوب توضیح داده باشم.:قلب: