# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها > سوال: عمل pop در لیست پیوندی

## hercool

با سلام 
می خوام ببینم تعریفی که من از برنامه دارم درست است یا نه 

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



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

----------


## سعیدسعید

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

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

----------

