آموزش لیست پیوندی linked list در برنامه نویسی

link-list-openmind.ir-2

آموزش لیست پیوندی linked list در برنامه نویسی

آپدیت : برای کسب اطلاعات بیشتر بعد از مطالعه ی این پست به این پست ما سر بزنید : لیست پیوندی دو طرفه – doubly linked list

در این پست با آموزش لیست پیوندی یا همان لینک لیست (linked list) در خدمتتان هستم. لیست پیوندی چیست؟ لیست پیوندی یک نوع ساختمان داده است که یک خاصیت خیلی مهم و مفید داره اونم خاصیت پویا یا Dynamic است که به ما اجازه نوشتن برنامه های دینامیک را می دهد.

حالا برویم سراغ ایجاد لیست پیوندی و ببینیم اصلا چی هست .ما خیلی از جاها در برنامه خود از  آرایه استفاده کرده ایم اگه توجه کرده باشید می بینید که اول برنامه طول آرایه را اعلام می کنید و تا  آخر برنامه   طول آن آرایه همان است ممکن است شما ها خانه های بیشتری بخواهید یا خانه در آرایه اضافه آورده باشید یا حتی بخواهید یک خانه را حذف کنید یا شاید هم یک خانه اضافه کنید ، در این جا است که آرایه جواب گوی شما نیست این موقع است که اژدها (linked list) وارد می شود و به کمک تان می آید .

لینک لیست همانند آرایه از بخش های کوچک تری تشکیل شده که گره (Node  )  نام دارد که دارای دو بخش کلی است بخش اول بخش خصوصیات لینک لیست است مانند شماره دانشجویی، اسم دانش آموز، معدل و … که از نوع هایی مانند int و float  و string(رشته) و غیره است و بخش دوم آدرس است که بخش اصلی لینک لیست است بخش آدرس قسمتی است که آدرس یک گره دیگر یا هیچ (NULL) درون آن است.

با بخش دوم است که لینک لیست معنا پیدا می کند فرض کنید شما یک گره دارید و یک گره دیگر می خواهید،برای این کار یک گره ایجاد می کنیم و آدرس آن را در گره اولیه می گذاریم حالا گره جدید به گره اولیه وصل است .در واقع بخش آدرس در لینک لیست امکان می دهد که گره اضافه کنیم یا حذف کنیم یا لیست را پیمایش کنیم و … .

ایجاد لیست پیوندی(linked list) در C++ :

در سی سی پلاس پلاس با دو روش می شود لینک لیست ایجاد کرد یکی با کلاس (class)  یکی با ساختمان (struct  ) که تفاوت کمی دارند که ما لینک لیستمان  را با کلاس درست می کنیم که بهتر است و اگر آن را بلد باشید با struct  هم می توانید .

انواع لینک لیست :

۱-لینک لیست یک پیوندی: این نوع لینک لیست فقط دارای یک جایگاه برای آدرس است و هر گره آدرس خانه بعدی یا خانه پوچ را نگه می دارد:

لینک لیست یک پیوندی

لینک لیست یک پیوندی

این ضربدره هم که می بینید همان خانه پوچ است.

۲-لینک لیست دو پیوندی:این نوع لینک لیست دارای  دو خانه حاوی آئرس است یکی به خانه بعد یکی به خانه قبل:

لینک لیست دو پیوندی

لینک لیست دو پیوندی

۳-لیست پیوندی حلقوی:لیست پیوندی حلقوی مانند لیست پیوندی یک پیوندی است با این تفاوت که خانه آخر به خانه اول اشاره می کند:

لینک پیوندی حلقوی

لینک پیوندی حلقوی

ما در این پست لیست پیوندی یک پیوندی را بررسی می کنیم و در روزهای آینده به سایر نوع ها می پردازیم.

خوب ما برای لینک لیست احتیاج به گره داریم ما یک کلاس به اسم node یا هر اسم دیگر ایجاد می کنیم که دارای دو بخش است یکی بخش آدرس که در ایجا اسمش را next گداشتیم و برای این که بتواند به یک گره node اشاره کند باید اشاره گری از همان کلاس node باشد.بخش دیگر هم اطلاعات لیست است که می تواند شامل تعداد متعددی از انواع مختلفی باشد ولی چون این یک مثال آموزشی است ما فقط یک ویژگی به اسم Data با نوع int  در نظر می گیریم.

خوب خود لیست پیوندی  هم احتیاج به یک کلاس دارد ، ما کلاسی با اسم دلخواه linkedlist برای آن ایجاد می کنیم.همین طور می بینید این کلاس احتیاج دارد که به اعضای کلاس node دسترسی داشته باشد و از آن جایی که کلاس node  اعضایش Private تعریف شده است ما کلاس linkedlist را دوست node تعریف می کنیم.

خوب ما بیس اصلی لیست پیوندی آماده کردیم باید حالا بریم سراغ تک تک توابع عضو و خاصیت های کلاس linkedlist .

ما برای داشتن لیست پیوندی به دو ویژگی نیاز داریم یکی ته لیست که ما اسمش را last گذاشتیم و دیگری سر لیست که اسمش را first گداشتیم که هر دو اشاره گری از نوع node اند

تابع اول تابع سازنده خود کلاس لینک لیست است با اسم   linkedlist() که همین طور می بینید وظیفه اش این است که خاصیت first لیست را وقتی که ایجاد می شود را null یا پوچ قرار می دهد.

تابع بعدی تابع addelement است و دو وظیفه دارد ۱-اگر لیست پیوندی ایجاد نشده بود آن را با اضافه کردن مشخصات first , last  به یک گره ایجاد می کند۲-اگر هم لیست موجود بود یک گره به ته آن اضافه می کند

اضافه کردن گره به لیست موجود

اضافه کردن گره به لیست موجود



تابع deleteelement تابع حذف گره از لیست پیوندی است که بر اساس مقداری که دریافت می کند در گره های لیست جست وجو می کند تا به گره ای برسد که خاصیت data آن مقداری برابر آن چیزی که دریافت کرده است باشد آنگاه آن گره را حذف می کند البته بستگی دارد گره کجا باشد زیرا الگوریتم حذف آن متفاوت است اگر گره اولین گره باشد یک جور حذف می شود اگر گره آخر باشد جور دیگر اگر سایر گره ها باشد مدلی دیگر .

حذف یک گره از لیست

حذف یک گره از لیست



تابع showlist تابعی که از اول لیست شروع می کنه تا آخر لیست تمام گره ها را چاپ می کند

اینم از یک کد کلی که ایجاد یک لینک لیست در سی پلاس پلاس را نشان می دهد:

تابع جست و جو هم تقریبا مانند تابع حذف گره از لیست است .اگر مشکلی بود در نظرات بیان کنید تا در موردش بحث کنیم.

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

 

 

 

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

۹۴ دیدگاه

  • خیلی خیلی ممنونم یکی از بزرگترین مشکلات منو توی لیست پیوندی حل کردید .اگه پشنه وصف و بقیه روهم همینجوری توضیح بدید عالیه بازم ممنونم .

  • امیرعلی موسوی

    ممکن است چند کاربرد linked list در برنامه نویسی را ذکر کنید؟ کاربردی که توسط array انجام پذیر نباشد.

    • کاربرد که زیاد هست . ولی فرض کن شما یک لیست طولانی از داده ها می خواهی که یک سری داده رو ذخیره کنی. آرایه در حافظه به صورت خانه های پشت سر هم ذخیره می شه . که اگر اون لیستتون تعداد المنت های توش زیاد باشه سخت می شه توی حافظه جایی برای آرایه با طول زیاد پیدا کرد. ولی لینک لیست اینطوری نیست . هر قسمت لینک لیست می تونه جای مختلفی از حافظه باشه. همین طور در آرایه المنتی رو نمی تونیم حذف کنیم . برای حذف یک المنت باید یک ارایه جدید بسازیم و همه ی داده های قبلی رو بجز اون المنتی رو که می خوایم رو حذف کنیم.
      لینک لیست یک داده ساختار ساده است که با آن ساختمان داده های مختلف و پیچیده ای می توان ساخت. در جاهایی که حذف المنت زیاد انجام می شود لیست پیوندی از گزینه های خوب است.

  • سلام عرض شد
    من ی مشکلی دارم تو این کدتون !! ب نظر من اگ از last استفاده نکنیم هک تابع کار میکنه . من اینو ی جور دیگ نوشتم !! احساس میکنم این پیوندی ک باید بین نودها باشه تو کد من بهتر نمایش داده میشه !! تابع AddNode:

  • واقعا ممنونم

  • سلام
    اگر بخواهیم به جای یک متغییر مل data چند متغییر تعربف کرده و مقدار دهی کنیم باید چیکار کنیم؟
    ممنون

  • سلام
    سایت خیلی خوبی دارین
    واقعا مفید و مختصره

  • من نمیدونم چرا هیچ جا هیچی به زبان جاوا نیست چرا همش سی و سی پلاس پلاس??

  • سلام خیلی سایت خوبی دارین ممنون

  • ممنون واقعا
    من تازه فهمیدم لیست پیوندی چی هست!

  • سپاس.
    استفاده کردم.
    خیلی عالی بود

  • سلام، خیلی عالی بود
    فقط نمیشه فرند کلاس نباشه؟
    بعد اگه بخوایم دوتا عدد بزرگ رو باهم جمع کنیم بااستفاده از لیست پیوندی یکطرفه چجوری میشه؟
    میشه کدشو بگید لطفا؟
    واقعا ممنون…

    • فرهاد دلیرانی

      سلام ، می شه فرند نباشه . برای این کار برای اجزای private کلاس تابع get , set تعریف می کنیم که متغییر های private کلاس رو ست کنه یا برگردونه ، این طوری لازم نیست اون یکی کلاس برای دسترسی به اجزای پرایوت کلاس دیگر فرند تعریف شود ،

  • عالییییی بود مرسی…

  • سلام خوبین؟
    تروخدا جواب من بدید من به شدت به کمکتون نیاز دارم….

  • سلام چرا جواب منا نمیدید؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  • سخت ولی همیشه ممکن

    سلام وخسته نباشید خدمته مهندس دلیرانیه عزیز , دوسته عزیز میشه الگوریتم جستجو در لینک لیست رو برام بذاری-خداییش هر چی امتحان کردم جواب قابل قبولی نمیده(یجور جستجو با اسم دانشجو که بعد از جستجو- شماره دانشجویی و سه نمره درسش رو نشون بده)از وبسایت جالبی که راه انداختی صمیمانه تشکر میکنم(سال نو بر همه مهندسین ایران مبااااااااااارک)

    • فرهاد دلیرانی

      جست و جو در خود کد بالا هست – برای جست و جو باید از نود اول شروع کنی حرکت کنی تا نو آخر و هر بار چک کنی.

  • سلام استاد!
    واقعا ممنونم.بعد ۱۵ -۲۰ روز گشتن و خوندن وبسایتای متفاوت و کتاب و جزوه،امشب بالاخره لیست پیوندی رو فهمیدم.
    خیلی ساده و کامل توضیح داده بودی خدا خیرت بده!
    خداقوت عزیز!

  • باسلام و عرض ادب.
    من یک پروژه برنامه نویسی دارم ولی متاسفانه نمیتونم بنویسمش. تو این کار زیاد وارد نیستم. فقط کارهای جزیی بلدم. میشه خواهش کنم کمکم کنید که بنویسمش. اگه ب ایمیل خودم بفرستیتش که بسیار سپاسگذار میشم.
    باید برای استادم ارایه اش بدهم و اجراش کنم. وقت زیادی ندارم.حداکثر تایکی دو هفته دیگه باید تحویلش بدم.
    موضوع پروژه اینه:
    لیست پیوندی ایجاد کنید که اطلاعات ۵۰ دانشجو، مثلا(نام، نام خانوادگی، شماره دانشجویی، رشته تحصیلی) را دریافت کند. و عمل سرچ درج و حذف از لیست پیوندی را انجام دهد. به این صورت که:
    ۱)شماره دانشجویی دریافت کند، سایر مشخصات دانشجو را چاپ کند.
    ۲)شماره دانشجویی دریافت کند، دانشجوی بعد از دانشجوی مربوطه را چاپ کند.
    ۳)شماره دانشجویی دریافت کند، دانشجوی قبل از دانشجوی مربوطه را حذف کند.

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

    • فرهاد دلیرانی

      ما توی اوپن مایند برنامه ی آموزشی می گذاریم ، ولی اگر پروژه می خواهید سفارش دهید به تب “سفارش پروژه برنامه نویسی” در بالای صفحه مراجعه کنید.

  • دوست عزیز میشه نحوه ضرب چند جمله ای با لیست پیوندی یگطرفه و کدشو کمکم کنی بنویسم

    • فرهاد دلیرانی

      یک لیست درست می کنی که اشیایی درش هستند که دو ویژگی دارند یک درجه ی متغییره مثلا ایکس به توان شش و دیگری ضریبش.دو لیست پیوندی می خواهی ضرب کنی خانه اول لیست اول را ضرب در تمام خانه های لیست دوم می کنی و حاصل را در یک لیست جدید می ریزی و به همین ترتیب

  • حسین شفیعی

    در کدی که شما نوشتید در تابع حذف عنصری که نوشتید آخرین else را اشتباه نوشتید. قبله اینکه کد رو بگذارید تو سایت یه اجرا بگیرید ازش اگه داده ی ما اولی و آخرین نباشد وسطی است که کدش در الس آخرین نوشته شده ولی اینطور که شما نوشتید فقط دومی رو حذف میکنه اجرا بگیرید از کد متوجه اشتباهتون میشوید در کل خیلی خوب بود. ممنون

    • فرهاد دلیرانی

      تشکر بابت نظرتون ، ولی من کد چند بار اجرا کردم و هربار درست کار کرد . مثلا به لینک لیستی به صورت ۱ ۳ ۴ ۶ ۸ ۹ ساختم و به تابع پاک کردن از لیست گفتم عدد شش را پیدا و پاک کند . درست کار کرد و شش را پاک کرد!
      شاید من منظورتون رو درست متوجه نشدم.

  • سلام می تونم خاهش کنم بخش های دیگه ای از لیست پیوندی رو هم اموزش بدین ….مته لیست پیوندی با گره راس و انتهایی و لیست دو پیوندی ؟؟؟ ممنونم

  • salam hala age tu ghesmate add 3 halat begirim :1)first=NULL ke shoma neveshtin va
    first->data>i
    va first->data<i
    dar in halat ha age bekhaym baresi konim chi ke moratab shode ham bashan?

    • فرهاد دلیرانی

      اگر بخواهید لینک لیست مرتب درست کنید خوب خوبه و کار کی کنه با یک کمی تغییر ، ولی لینک لیست بیشتر برای ارتباط اجزا استفاده می شه مثلا فرض کنید می خواهید با لینک لیست یک درخت بسازید اون موقع مهمه که رابطه پدر فرزندی رعایت شود.

  • به هرحال گفتم که شمابایدتمام اینکارهارو۱ماه پیش انجام میدادید.آدم یامسئولیت قبول نمیکنه یااگه قبول کرد اونوبه بهترین نحو وبه موقع انجام میده

  • سلام
    قراربودشما۱۰تیرپروژه ی تابستون برنامه نویسی پیشرفته رو بذاریدرو همین سایت.الان تقریبا۹روزگذشته.خواهش میکنم سریعترپروژه روبذاریدهمون طورکه درجریان هستید ما به زمان بیشتری احتیاج داریم…………………

    • فرهاد دلیرانی

      سلام ،
      من شنبه می روم پیش دکتر نصیری و با هاشون صحبت می کنم ،تا سه شنبه می ذارم رو سایت

      • پس این سه شنبه ای که شمامیگیدکی ازراه میرسه!!!؟؟؟؟؟؟؟؟؟؟مااگه وقت کم بیاریم مسئولیتش باکیه؟

        • فرهاد دلیرانی

          الان چهار پنج روزه با دکتر نصیری تمام وقت رویش داریم کار می کنیم
          احتمالا امشب بذارمش روی سایت

          • شمابایداین کارو۱ماه پیش انجام میدادید.نه الان که ۱ماه ازتعطیلاتمون گذشته.به احتمال زیادوقت کم میاریم مخصوصااین که تاریخ تحویل پروژه هم مثل سال های قبل,قبل از۱۵شهریوره یعنی ماحدودا۱ماه وقت داریم درصورتی که بچه های سال های گذشته ۲ماه وقت داشتن.نمیدونم تواین۱ماه چیکارمیشه کرد؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

          • فرهاد دلیرانی

            من و دکتر نصیری برای آماده کردن این پروژه دقیقا یک هفته کامل وقت گذاشتیم،بعدش من خودم کلی پروژه دارم و داشتم و وقتم خیلی محدود بود، این دوتا پروژه هم هر کدوم چهار روز برای نوشتن لازم داره

  • برنامه ای بنویسیدکه بااستفاده از لیست های پیوندی عملیات زیر را انجام برروی چند جمله ای ها انجام دهد.
    (a مقدار دهی به چند جمله ای
    (bجمع کردن ۲چند جمله ای
    (cتفریق ۲چند جمله ای
    (d بازیابی درجه یک چند جمله ای
    سلام میشه این برنامه رویکی راهنمایی کنه

  • سلام استاد عزیز
    وقت بخیر
    من زیاد با برنامه نویسی آشنایی ندارم و برای پروژه پایانی این درس استاد ما یه برنامه داده بنویسیم که من واقعا بلد نیستم..ممنون میشم ازتون اگه کمکم کنید…..موضوع برنامه به اینصورت هستش که :
    برنامه ای بنویسید که ۱۰۰ عدد تصادفی را خوانده و در لیست پیوندی قرار بده سپس با استفاده از تابع مقادیر زیر را پیدا کند
    min,max,average
    استاد اگه ممکنه سریعتر اینو برام بفرستید
    با تشکر فراوان از شما.
    الهام

  • سلام داداش مرامت تو حلقم خیلیییی کارمو آسون کردی پیاده سازیش کلی وقت میگرفت ازم

  • سلام
    وقتتون بخیر
    من برای پروژم باید ی چند جمله ای از کابر بگیرم و مشتق و انتگرالشو حساب کنم همش با لیست پیوندی و به زبان سی شارپ
    کسی هست مرا یاری کند آیا؟:(

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

  • Admiring the time and energy you put into your website and detailed information you offer.
    It’s awesome to come across a blog every once in a while that isn’t the same outdated rehashed information. Great read!
    I’ve saved your site and I’m adding your RSS feeds to my Google account.

  • تعریف لیست پیوندی توی سی شارپ هم به همین صورت است؟میشه اون رو هم توضیح دهید

  • Greetings! Very helpful advice in this particular article!
    It’s the little changes that produce the largest changes. Many
    thanks for sharing!

  • salam.kheli khooooob bud. plz code java ro bzarin vajebe mamnoon misham

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

  • سلام ببخشید چطوری میشه ۲ تا لیست رو پشت هم نوشت مثلا یه لیستی شامل x1,x2 و یه لیستی شامل y1,y2,y3,y4 باشه و در نهایت بشه y1,x1,y2,x2,y3,y4 این کار بدون ایجاد لیست جدید انجام بشه

    • فرهاد دلیرانی

      لینک لیست یک ساختمان داده پویا است یعنی می شه بهش اضافه و کم کرد شما هم نود های یکی از لینک لیست ها رو به دیگری اضافه کن و بعد حافظه که لینک لیست اولی می گیرد آزاد کن.به تابع add توجه کن.

  • Your means of explaining all in this article is actually good,
    every one be able to easily be aware of it, Thanks a lot.

  • I couldn’t refrain from commenting. Perfectly written!

  • سلام می خواستم دولسیت رو با هم مقایسه کنم کمک کنید؟
    میشه از یک کلاس استفاده کرد ولی در مقایسه چطوری دو تا لیست رو با هم مقایسه کنم؟

    • فرهاد دلیرانی

      خیلی این کار راحت است : اول یک پوینتر روی اولی و بعد یک پوینتر روی دومی می گذاری بعد دوتا خونه ای که پوینتر ها دارند بهشان اشاره می کنند را مقایسه می کنید و بعد هر دو پویینتر را یکی جلو می بریم و بعد دوباره مقایسه می کنیم و همین کار را ادامه می دهیم…

  • سلام.میشه با ساختار ها هم لیست های پیوندی رو بنویسین؟

    • فرهاد دلیرانی

      این کد با استراکت زبان سی و فقط لینک لیست می سازه و به آن نود اضافه می کند.

      #include
      #include

      struct student
      {
      int weight;
      int age;
      struct student *next;
      };

      struct student_linkedlist
      {
      struct student *head;
      };
      //===================================================
      //Add node to list
      struct student* add_to_list(struct student *first)
      {
      struct student *temp;
      temp = malloc(sizeof(struct student));
      temp->next = NULL;

      printf(“Please inter student’s weight:\n”);
      scanf(“%d”,&temp->weight);

      printf(“Please inter student’s age:\n”);
      scanf(“%d”,&temp->age);

      if(first==NULL)
      {
      //create first node
      first=temp;
      }
      else
      {
      //create other node
      struct student *temp2 = first;
      while(temp2->next != NULL)
      {
      temp2 = temp2->next;
      }
      temp2->next=temp;
      }
      return first;
      }
      //===================================================
      //show list
      void show_list(struct student *first)
      {
      struct student *temp = first;
      if(temp == NULL)
      {
      printf(“List is empty!\n”);
      }
      else
      {
      while(temp!= NULL)
      {
      printf(“%d , %d\n”,temp->weight,temp->age);
      temp = temp->next;
      }
      }
      }
      //===================================================
      int main()
      {
      int i;

      struct student_linkedlist my_link;

      //**********important********************
      my_link.head = NULL;//*******head should be null when program start**********
      //**********important********************

      //for example add 4 node to list
      for(i=0;i<۴;i++) { my_link.head = add_to_list(my_link.head); } //show list show_list(my_link.head); return 0; }

  • Nice respond in return of this issue with real arguments and explaining everything on the topic of that.

  • I like the valuable information you supply for your articles.
    I will bookmark your blog and check once more here regularly.
    I’m moderately sure I’ll learn many new stuff right here!
    Good luck for the next!

    Here is my homepage http://jxa.evenweb.com

  • سلام،امکانش هست کد تابع delete after رو با سی شارپ بذارید؟؟؟

  • salam chi shod pas?????????????????????????

  • dar zemn anjam amaliat push va pop ru ham mikham
    tashakor

  • سلام خوب بود مرسی میشه پیاده سازی پشته با استفاده از لیست پیوندی در زبان vb رو بگین ممنونم

  • سلام
    من یه پروژه دارم که باید با لیست پیوندی یک چند جمله ای چند متغیره را پیاده سازی کنم 🙁 چند جمله ای چند متغیره هم باید از نوع string باشه.و باید در نهایت ساده شده به خروجی بره.
    اگه بتونید کمکم کنید خیلی ممنون میشم.

  • salam.tashakor.tozihat kh kamelo khob bod 🙂

  • سلام.خیلی عالی بود ممنون اقافرهاد

  • salam.age emkanesh hast tabe jostejo ham barash tarif konin.khely vajebe
    mamnoon

  • در قسمت void linkelist::addelement بخش first->data=data1 قسمت data رو error می ده چیکار کنم.

  • *temp.next
    daqiqan b che manast???
    kheili vajebe mamnoon

    • فرهاد دلیرانی

      temp هم یک شی از کلاس node است فرض کن شما می خواهید جای دو عدد a,b در یک برنامه عوض کنید شما برای این کار یک متغییر تعریف می کنید تا مقدار a را در c بریزید و مقدار b را در a و در آخر مقدار c را در a . بگذارید ساده تر به شما بگوییم فرض کنید یک ظرف خورشت سبزی دارید و در یک ظرف دیگر آش حالا فکر کنید می خواهید جای این دو را عوض کنید برای این کار چه می کنید ؟؟ معلوم است یک ظرف خالی می آورید و آش را درون آن می ریزید و بعد خورشت سبزی را در ظرف خالی آش می ریزید و بعد آش را در ضرف خالی خورشت می ریزید . تقریبا temp هم به طور کلی همین کار را می کند . لبته کاربرد های دیگری هم دارد. (کاربرد های دیگر : اضافه کردن گره ، حذف گره ، پیمایش گره)

  • salam, khaili mamnoon .

    kamel o khub bud.

نظر خود را بنویسید.

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *