PDA

View Full Version : مبتدی: سوال در مورد پشته (stack)



warbler
شنبه 19 اردیبهشت 1394, 23:38 عصر
چرا عنصر بالایی (top) در stack از 1- شروع میشه و از صفر شروع نمیشه؟

pcrlth0n
یک شنبه 20 اردیبهشت 1394, 02:11 صبح
سلام
سوالتون یکم گنگ هستش, پشته از 1- شروع نمیشه !
توی مبحث برنامه نویسی و این چیزا پشته از آدرس های بالای حافظه به آدرس های پایین حافظه رشد میکنه.و بالاترین عنصر همیشه آدرسش کوچکتر از عنصرهای پایینی هستش.
البته 1- رو هم اگه بصورت هگز نشونش بدیم میشه FFFFFFFF که این هم آدرس بالای حافظه هستش.
توضیح بیشتر درمورد سوالتون بدید دقیقتر میشه جواب داد

warbler
یک شنبه 20 اردیبهشت 1394, 14:28 عصر
سلام
سوالتون یکم گنگ هستش, پشته از 1- شروع نمیشه !
توی مبحث برنامه نویسی و این چیزا پشته از آدرس های بالای حافظه به آدرس های پایین حافظه رشد میکنه.و بالاترین عنصر همیشه آدرسش کوچکتر از عنصرهای پایینی هستش.
البته 1- رو هم اگه بصورت هگز نشونش بدیم میشه FFFFFFFF که این هم آدرس بالای حافظه هستش.
توضیح بیشتر درمورد سوالتون بدید دقیقتر میشه جواب داد

این لینک (http://www.algolist.net/Data_structures/Stack/Array-based_implementation)رو نگاه کنید . مقدار اولیه ایندکس عنصر بالایی 1- هست (برای پشته خالی که هنوز چیزی توش نریختیم)
حالا سوال من اینه که چرا به جای 1- از 0 استفاده نمیکنن .

pcrlth0n
یک شنبه 20 اردیبهشت 1394, 22:09 عصر
اینجا اومده نحوه عملکرد پشته رو یه جورایی پیاده سازی کرده توی فضای کوچیکتر. و با پشته واقعی فرق داره.
داخل این کد 1- نقش بالای حافظه رو بازی میکنه یعنی اینکه وقتی ما یک عنصر روی حافظه قرار میدیم(push) پس آدرس از بالا به پایین میاد,پس یه واحد به 1- اضافه میشه (میشه 2-) که در حقیقت باعث میشه رو به پایین بیاد (یعنی آدرسش کوچیکتر بشه) .
اگه از صفر استفاده کنه کل این روند برعکس میشه یعنی آدرس ها از پایین به بالا (از آدرس کوچکتر به بزرگتر) رشد میکنند. 1- همونطور که گفتم FFFFFFFF هستش و این رو هم بگم که 2- < 1- هستش :)
اگه توضیحات بیشتر و جزئی تر خواستید بگید