PDA

View Full Version : سوال: عمل pop در لیست پیوندی



hercool
پنج شنبه 02 دی 1389, 18:44 عصر
با سلام
می خوام ببینم تعریفی که من از برنامه دارم درست است یا نه


void pop (node *top)
{
node *ptr;
ptr=top;
top=top->next;
freenode(ptr);
}




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

سعیدسعید
پنج شنبه 02 دی 1389, 19:50 عصر
باز هم سلام
حدس شما کاملا درست است. آدرس حافظه ای که top به آن اشاره می کند را در داخل متغیر ptr قرار می دهد. در حقیقت محتوای top در داخل ptr قرار می گیرد. بنابر این چون top یک اشاره گر است پس محتوای ان یک ادرس است که اصطلاحا می گویییم top به این خانه اشاره می کند. حال این محتوا یعنی ادرس در داخل ptr قرار می گیرد.
عین متغیر های معمولی. به مثال زیر نگاه کن:
x=10
y=x
بعد از اجرای دستورات فوق محتوای متغیر x در داخل y قرار می گیرد.
حالا در مورد اشاره گر ها هم دقیقا همین اتفاق می افتد محتوای آنها با همدیگر مبادله می شود فقط باید توجه داشت که محتوای یک متغیر اشاره گر یک آدرسی از حافظه است بنابراین چون ادرس ها مبادله می شوند ما می گوییم به یکجا اشاره می کنند.

امیدوارم که مطالب فوق برایت مفید باشد.:لبخندساده: