مشاهده پست های بی پاسخ | مشاهده موضوعهای فعال تاریخ امروز دوشنبه 25 ژوئن, 2018 9:19 am



پاسخ به موضوع  [ یک پست ] 
 پشته یا استک در ساختمان داده ها ( stack ) 
نویسنده پیام

عضو: پنجشنبه 03 آوریل, 2008 12:29 pm
پست ها: 146
پست پشته یا استک در ساختمان داده ها ( stack )
يك پشته ساختمان داده اي خطي است كه در ان عمل اضافه كردن يا حذف عنصر تنها در يك انتهاي ان امكانپذير است باين ترتيب به پشته ها ليستهاي اخرين ورودي اولين خروجي LIFO : Last In First Out نيز ميگويند . گاهي به پشته FILO نيز ميگويند .
يكي از كاربردهاي پشته ذخيره ادرس بازگشت و ساخت متغيرهاي محلي در صدا زدن توابع است .
در ابتداي كار با پشته top به عنصر صفرام پشته اشاره ميكند .
يك پشته ليستي از عناصر است كه در آن هر عنصر را ميتوان تنها از يك انتها موسوم به بالاي پشته حذف يا اضافه كرد يعني عناصر به ترتيب عكسي كه وارد پشته ميشوند از پشته حذف ميشوند .
نقطه اي كه در ان ميتوان اطلاعات را وارد پشته يا از ان خارج كرد مهمترين نقطه پشته است كه به بالاي پشته با نام TOP شناخته ميشود .
بنابراين عناصر به ترتيب عكسي كه وارد پشته ميشوند از پشته حذف ميشوند .
براي وارد كردن اطلاعات به پشته از عملي به نام PUSH استفاده ميكنيم و براي حذف اطلاعات از ان از POP استفاده ميكنيم .
براي سهولت كار با پشته ها انها را با ليست يكطرفه يا آرايه خطي نشان ميدهند .
براي PUSH كردن يك عنصر در پشته ميتوانيم از پراسيجري به نام PUSH استفاده كنيم كه داراي ورودي هاي مانند نام پوشه (STACK) و نقطه بالايي TOP و حداكثر اندازه پشته و متغيري كه قرار است وارد پشته شود :
ضمیمه:
data5.JPG


در پراسيجر بالا ابتدا براي انكه اشتباها سرريز overflow از پشته رخ ندهد بايد چك كنيم كه بالاترين نقطه top در كجاست ؟ ايا امكان دارد يك مقدار به ان اضافه شود در حاليكه از سايز پشته بالاتر نرود ؟
اگر پشته اماده دريافت باشد به گام دوم برنامه فوق ميرويم وگرنه با تايپ شدن پيغام overflow از پراسيجر خارج ميشويم .
در گام دوم پراسيجر يك مقدار به top استفاده ميكنيم تا اشاره به مكاني بكند كه قرار است داده ما به ان وارد شود .
در گام سوم عنصر ما وارد پشته ميشود .
در گام چهارم به نقطه پاياني ميرسيم و سپس از برنامه خارج ميشويم .
براي حذف يك عنصر از پشته از تابع POP استفاده ميكنيم :
ضمیمه:
data6.JPG


در تابع فوق همانطور كه ميبينيد باز هم در اولين گام چك كرديم كه ايا ارايه عنصري دارد ؟ اگر ندارد اشتباها نميتوانيم عنصري از ان بردارد بنابراين از خطاي احتمالي زيرريز underflow جلوگيري كرديم . بصورت قرار دادي ميتوانيم در خروجي تابع هرگاه پشته ما خالي بود هر مقداري بازگردانيم كه در اينجا بصورت قراردادي مقدار پوچ null را بازگردانيديم .
پس از انكه مطمئن شديم پشته ما مقداري دارد ان مقداري كه اشاره گر top به ان اشاره ميكند را در متغيري محلي بنام y ميريزيم و سپس از مقدار top يكي كم ميكنيم .
و مقدار y را در نام تابع return ميكنيم .


برای مشاهده تصاویر و دانلود فایل های ضمیمه ، لازم است در سایت ثبت نام کرده و با نام کاربری خود وارد شوید. در حال حاضر ثبت نام در سایت رایگان است.


شنبه 14 ژوئن, 2008 12:17 pm
مشخصات شخصی
مشاهده پست های قبلی:  نمایش بر اساس  
پاسخ به موضوع   [ یک پست ] 

افراد آنلاین

کاربر حاضر در این تالار : - و 1 مهمان


شما نمی توانید در این تالار موضوع جدید باز کنید
شما نمی توانید در این تالار به موضوع ها پاسخ دهید
شما نمی توانید در این تالار پست های خود را ویرایش کنید
شما نمی توانید در این تالار پست های خود را حذف کنید
شما نمی توانید در این تالار ضمیمه ارسال کنید

جستجو برای:
پرش به:  
cron
استفاده و نقل از مباحث سایت، فقط با ذکر منبع و لینک سایت میکرورایانه مجاز است.
Copyright © 2006 - 2010 MicroRayaneh - Powered by phpBB © phpBB Group
Valid CSS2 Valid XHTML 1.0
طراحی سایت : میکرو رایانه