لیست پیوندی یک طرفه
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 15






  1. #1
    AcademicGroup
    غریبه

    لیست پیوندی یک طرفه

    در این تاپیک خلاصه ی مطالب درسی مربوط به لیست پیوندی یک طرفه قرار میگیرد .

  2. #2
    مدیرکل Mahdi آواتار ها
    تاریخ عضویت
    Nov 2011
    نوشته ها
    565
    تشکر
    570
    تشکر شده 1,038 بار در 371 ارسال

    توضیحات لیست پیوندی یک طرفه

    لیست های پیوندی ساختار داده ای هستند که به نسبت آرایه ها بسیار منعطف هستند .
    در ساده ترین حالت یک لیست پیوندی :
    1-در تعداد عناصری که میتواند ذخیره کند هیچ محدودیتی ندارد و در زمان اجرای برنامه این تعداد میتواند کم و زیاد شود.
    2-تنها عناصر همگن را میتواند در یک لیست نگه دارد.(البته همون طور که عرض کردم در ساده ترین حالت این طور هست و گرنه با کمک قابلیت وراثت و پلی مورفیسم میتوان لیستی از چند نوع داده ی مختلف داشت .)
    3-سرعت دسترسی به عناصر ابتدائی بیشتر از عناصر انتهائی لیست است.

    برای پیاده سازی شی گرای این ساختار داده حداقل به دو کلاس نیاز داریم :
    1-کلاس گره
    2-کلاس لیست
    کلاس گره طرح و نقشه ی کلی هر عنصری است که قرار است داخل لیست ذخیره گردد یا به عبارت ساده تر هر شی از کلاس گره میتواند یکی از عناصر لیست ما شود !
    کلاس لیست طرح و نقشه ی کلی برای ساخت مجموعه ای است که امکان مدیریت و ویرایش یک لیست رو به شما دهد .

    اعضای کلاس گره :
    [size=medium]کلاس گره در ساده ترین حالت از دو عنصر تشکیل شده که :[/size]
    1-آدرس خانه ی بعد :
    "آدرس خانه ی بعد" یک متغیر رفرنسی ( متغیری که برای ذخیره شدن آدرس یکی از خانه های حافظه استفاده میشود) است که می تواند آدرس حلقه ی بعدی از زنجیره ی لینک لیست رو در خود نگه دارد .
    2-اطلاعات :
    همون طور که گفتیم لیست پیوندی یک ساختار داده است و ساختار داده یک روش برای ذخیره کردن اطلاعات در حافظه ی اصلی است پس هدف ذخیره کردن بهینه ی اطلاعات است .
    این اطلاعات درون فیلدی از جنس دلخواه و به نام اطلاعات و در هر شی از کلاس گره ذخیره میشود .
    [size=medium] کلاس لیست در ساده ترین حالت از اعضای زیر تشکیل شده :[/size]

    1-آدرس اولین خانه :
    مکانیزی که لیست های پیوندی برای پیدا کردن عناصر لیست استفاده می کنند به این شکل است که آدرس اولین عنصر لیست در کلاس اصلی (یعنی کلاس لیست) ذخیره میشود و آدرس هر کدام از عناصر بعد در عنصر قبلی به عبارتی :
    آدرس عنصر اول --->در خود کلاس لیست .
    آدرس عنصر دوم --->در عنصر اول
    آدرس عنصر سوم --->در عنصر دوم
    .
    .
    .
    آدرس عنصر n ام ---> در عنصر n-1 ام

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

    3-متد حذف :
    عملیات حذف از یک لیست بسته به نوع لیست که مرتب شده است یا خیر اندکی متفاوت است .این عملیات به دنبال یک عنصر میگردد و هر زمان که به انتهای لیست رسید یا به عنصری رسید که از عنصر مورد حذف بزرگتر(یا کوچکتر)است عملیات جستوجو برای حذف رو متوقف میکند چراکه مطمئن شده است عنصر مورد حذف در لیست وجود ندارد اما در حالت غیر مرتب شده الگوریتم حذف برای هر عنصر دلخواه یکبار به طور کامل باید لیست را پیمایش کند .

    4-متد جستوجو :
    این متد دقیقا مشابه متد حذف است به جز اینکه عملیات حذف را انجام نمی دهد .

    موارد بالا حداقل تعداد عضوی است که باید یک لیست در ساده ترین حالت داشته باشد .
    8 کاربر مقابل از Mahdi عزیز به خاطر این پست مفید تشکر کرده اند.
    fahime  (10-16-2012),
    f_gol  (11-09-2012),
    miss parisa  (04-03-2013),
    sirvan  (05-01-2013),
    software  (11-02-2012)

  3. #3
    مدیرکل Mahdi آواتار ها
    تاریخ عضویت
    Nov 2011
    نوشته ها
    565
    تشکر
    570
    تشکر شده 1,038 بار در 371 ارسال

    Re: لیست پیوندی یک طرفه

    توی ای نوشته میخوام به صورت عملیاتی تر راجع به لیست پیوندی توضیح بدم .
    اجازه بدید این مطلب رو به سه بخش تقسیم کنیم توی هر بخش سوال داشتید بپرسید و بگید از فلان قسمت بخش یک یا بخش دو ...فلان سوال برام پیش اومده .
    بخش اول موضوعی که میخوایم توی بخش یک راجع بهش حرف بزنیم متغیر رفرنس و فهم اون هستش اگر بلدید نمیخواد بخونید .
    تصور کنید یک کلاسی داریم مثل کلاس دانشجو به شکل زیر :
    class student
    {
    public string firstname, lastname;
    public double average;
    }

    حالا میخوایم بریم سراغ کد نوشتن توی Main .اولش Main این شکلیه :
    static void Main()
    {

    }

    و حافظه ی برنامه هم این شکلی :

    همون طور که میدونید قسمت کوچیکه استک هستش قسمت بزرگه هیپ حالا اسماش زیاد مهم نیست !
    بعد میام یک خط کد داخل Main می نویسم این جوری :

    static void Main()
    {
    student s;
    }

    وقتی این یک خط کد اجرا میشه سی شارپ یک خونه ی کوچولو داخل استک درست می کنه توش هم هیچی نیست !این جوری :


    حالا این به چه درد میخوره ؟
    این خونه کوچولوئه توش هیچی ذخیره نمیشه جز آدرس !
    یعنی چی ؟
    یعنی توش نه firstname داریم نه lastname نه average هیچی توش ذخیره نمیشه تا زمانی که ما کد زیر رو زیر کد قبلی می نویسیم :

    static void Main()
    {
    student s;
    s = new student();
    }


    این کد دو تا بخش داره :
    بخش اول اون new هستش که میره حافظه رو این شکلی می کنه :

    بخش دوم هم اون مساوی هستش که طبعا باید یک چیزی تو s ذخیره کنه که آدرس اون خونه هائی که new درست کرده هستش این شکلی :

    فایدش چیه ؟به خاطر یک جنس داده ی گنده ای مثل Student بی خود استک پر نمیشه و از فضای هیپ استفاده میشه البته فایده زیاد داره این یکیش بود !
    حالا اگر ما بیایم یک متغیر student دیگه هم درست کنیم چی :

    static void Main()
    {
    student s;
    s = new student();
    student s2;
    }


    اگر این کار رو بکنیم اتفاق خاصی نمیافته یک خونه ی دیگه هم داخل استک ساخته میشه که باز هم توش خالیه چون s2 رو مساوی چیزی قرار ندادیم که بخواد پر بشه یعنی این شکلی :


    و حالا اگر به جای اینکه بنویسیم s2= new student() بنویسیم :

    static void Main()
    {
    student s;
    s = new student();
    student s2;
    s2 = s;
    }

    حالا چی میشه ؟هیچی هر چیزی داخل s نوشته شده کپی میشه و یک نسخش هم داخل s2 قرار داده میشه اما نکته اینجاست که داخل s چیه ؟
    همون طور که گفتم داخل s هیچی نیست مگر یک آدرس ...پس همون آدرس عینا داخل s2 هم نوشته میشه و حالا هر دوشون به یک جا اشاره می کنند این شکلی :


    یعنی اگر مثلا یک وقتی نوشتیم :

    static void Main()
    {
    student s;
    s = new student();
    student s2;
    s2 = s;
    s.firstname = "Academic";
    s.lastname = "Group";
    s.average = 20.0;
    }

    چی میشه ؟هیچی اون سه تا متغیر داخل هیپ مقدار دهی میشند و با اینکه ما گفتیم s.firstname و s.lastname و s.average چون s2 هم به همونجائی اشاره می کنه که s اشاره می کنه تمام تغییرات واسه s2 هم عینا اعمال میشه .
    مثلا اگر بنویسیم :

    static void Main()
    {
    student s;
    s = new student();
    student s2;
    s2 = s;
    s.firstname = "Academic";
    s.lastname = "Group";
    s.average = 20.0;
    Console.WriteLine("Firstname : {0}",s2.firstname);
    Console.WriteLine("Lastname : {0}", s2.lastname);
    Console.WriteLine("Average : {0}", s2.average);
    }

    اون وقت چی نمایش میده این رو :


    و این یعنی اینکه محتوای s2 دقیقا با محتوای s یکی هستش !
    این مطلب رو اگر خوب بخونید و یاد بگیرید نصف مشکل لیست پیوندی حل میشه !
    حالا بریم سراغ بخش دوم کارمون :

    بخش دوم
    بررسی مفهوم متغیر رفرنس در کنار مفهوم آرایه :
    فقط در صورتی این بخش رو مطالعه کنید که بخش قبل رو به خوبی بلد باشید !
    توی این بخش میخوایم قدم به قدم آرایه بسازیم و تغییرات حافظه رو به ازای هر تکه کد ببینیم !
    اول میام و از جنس int که یک Value Type هستش (یعنی رفرنسی نیست و مقدار داخلش ذخیره میشه )یک آرایه درست می کنم و تغییرات حافظه رو بررسی می کنم :
    اول کار Main این شکلیه :

    static void Main()
    {

    }

    و حافظه هم این شکلی :


    در مرحله ی بعد میایم و یک ارایه از جنس Int درست می کنیم و کد این شکلی میشه :

    static void Main()
    {
    int[] a;
    }

    و وقتی این یک خط کد اجرا میشه حافظه این شکلی میشه :


    یک دونه از اون خونه های کوچولوئی که راجع بهش حرف زدیم توی بخش قبل توی استک درست میشه که اسمش a هستش و محتواش هم null هست یعنی خالیه !
    بعد میایم یک خط دیگه به کد اضافه می کنیم این شکلی :

    static void Main()
    {
    int[] a;
    a = new int[4];
    }

    با استفاده از اپراتور new به اندازه ی 4 تا int داخل حافظه فضا رزرو می کنیم و بعد از اون با استفاده از اپراتور = آدرس رو از new میگیریم و داخل a ذخیره می کنیم و حافظه این شکلی میشه :

    همون طور که میبینید a یک متغیر رفرنس تایپ هستش چون آرایه است و آرایه ها ذاتا رفرنسی هستند و حالا هم چون آدرس اون 4 تا خونه ی تولید شده توسط new داخل a ذخیره شده هر وقت بگیم a یعنی منظورمون اون چهار تا خونست مثلا اگر بگیم a[0] یعنی منظورمون خونه ی اول از بین اون 4 تا خونست و وقتی بگیم a[1] یعنی منظورمون خونه ی دوم از اون چهار تا خونست و الی آخر ...
    حالا این قسمت رو خوب فهمیدید ؟بریم سراغ آرایه از جنس Student !
    همون طور که توی بخش قبل دیدید Student یک نوع داده ی ارجاعی یا Reference Type هستش بنابراین آدرس داخلش ذخیره میشه نه مقدار !
    حالا میایم و و یک Main خالی میاریم تا کار رو شروع کنیم :

    static void Main()
    {

    }

    و حافظه هم این شکلیه :



    بعد میام یک آرایه از جنس Student درست می کنم به این شکل :

    static void Main()
    {
    student[] s;
    }

    و حافظه بعد از اجرا این تکه کد این شکلی میشه :

    میبینید که همون اتفاقی افتاد که وقتی از جنس Int آرایه میگرفتیم افتاد دقیقا یک خونه ی کوچولو برای ذخیره شدن آدرس !
    حالا میام با از اپراتوز new استفاده می کنم تا آرایه ام رو بسازم این شکلی :

    static void Main()
    {
    student[] s;
    s = new student[2];
    }

    توی این تیکه کد اول new به اندازه ی 2 تا "مستطیل خالی" داخل حافظه فضا رزرو کرد و آدرس خونه ی اول از طریق اپراتور = داخل s ذخیره شد !
    نکته ی مهم اینه که ماهیت اون "مستطیل خالی" چی هستش !!؟
    به شکل نگاه کنید :


    جمله ی مهم : "مستطیل های خالی" خونه هائی از حافظه هستند که قرار هستش آدرس student های اصلی داخلشون ذخیره بشه و در حقیقت s[0] و s[1] هستند !

    برای بهتر متوجه شدن به ادامه توجه کنید .
    حالا من میام و s[0] و s[1] رو new می کنم :

    static void Main()
    {
    student[] s;
    s = new student[2];
    s[0] = new student();
    s[1] = new student();
    }


    به ازای اجرا شدن این دو خط اضافه شده حافظه این شکلی میشه :


    این یعنی اینکه s[0] و s[1] هیچی نبودن به جز دو تا خونه ی خالی که توش آدرس یک جائی که اطلاعات اصلی دانشجو هست ذخیره بشه و حالا هم با دو تا new دو تا student جدید ساختیم و با دو تا = اون دو تا student رو داخل s[0] و s[1] قرار دادیم !

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

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

    class Linklist
    {
    class Node
    {
    public Node next;
    public int info;
    public Node(int item)
    {
    info = item;
    next = null;
    }
    public Node() : this(0) { }
    }
    Node Start;
    public bool Insert(int item)
    {
    Node p = new Node(item);
    if (p == null)
    return false;

    if (Start == null)//1
    Start = p;
    else//2
    {
    Node t = Start;//3
    while (t.next != null && t.next.info < item)//4
    t = t.next;//5
    if (t.next == null)//6
    t.next = p;//7
    else//8
    {
    p.next = t.next;//9
    t.next = p;//10
    }
    }
    return true;
    }

    public bool Remove(int item)
    {
    if (Start == null)//1
    return false;
    if (Start.info == item)//2
    {
    Start = Start.next;//3
    return true;
    }
    Node t = Start;//4
    while (t.next != null && t.next.info < item)//5
    t = t.next;
    if (t.next == null || t.next.info > item)//6
    return false;
    if (t.next.info == item)//8
    t.next = t.next.next;//9
    return true;
    }
    public void Display()
    {
    Node t = Start;
    while (t != null)
    {
    Console.Write("{0} ", t.info);
    t = t.next;
    }
    }
    }



    حالا میخوایم متد به متد و خط به خط توضیحش رو ببینیم اول متد Insert :
    این متد به عنوان ورودی عدد رو میگیره و میره توی لیست میگرده و عدد رو سرجای مناسب توی لیست درج می کنه تا لیست مرتب شده بمونه و در نهایت با استفاده از bool جواب برمیگردونه که در انجام این کار موفق بوده یا خیر !

    public bool Insert(int item)
    {
    Node p = new Node(item);
    if (p == null)
    return false;

    if (Start == null)//1
    Start = p;
    else//2
    {
    Node t = Start;//3
    while (t.next != null && t.next.info < item)//4
    t = t.next;//5
    if (t.next == null)//6
    t.next = p;//7
    else//8
    {
    p.next = t.next;//9
    t.next = p;//10
    }
    }
    return true;
    }


    خط هائی رو که کامنت زدم توضیح میدم :
    اول کار با اون عددی که به عنوان ورودی گرفتیم یعنی item یک آبجکت از جنس Node ساختیم .بعد از اون بررسی کردیم که آبجکتی که ساختیم واقعا ساخته شده یا نه اگر به هر دلیلی عملیات new کردن موفق نبوده برمیگردونیم false و تمام !
    اما اگر آبجکت با موفقیت درست شده بود :
    1 :
    بررسی می کنیم که آیا لیست خالی هست یا نه !
    چطوری این رو بررسی می کنیم ؟
    از طریق این موضوع که اگر لیست خالی باشه عنصر اول هم نباید داشته باشه و چون عنصر اول نباید داشته باشه پس Start هم نباید چیزی توش باشه یا به عبارتی Start باید null باشه !
    که اگر این موضوع حقیقت داشت داخل Start آدرس p رو قرار میدیم تا p بشه اولین عنصر لیست ما !
    2:در غیر این صورت یعنی اینکه لیست خالی نیست و داخلش حداقل یک عنصر هست و این معنیش اینه که باید شروع کنیم به گشتن داخل لیست و پیدا کردن جای مناسب برای عنصر تازه وارد (یعنی p) !
    الان از این خط به بعد می تونیم تصور کنیم لیست ما این شکلی هستش :


    برای پیدا کردن یک جای مناسب باید بین خونه ها حرکت کنیم و تک تکشون رو بخونیم !
    اما مشکل اینجاست که ما فقط آدرس خونه ای رو داریم که داخل Start ذخیره شده و آدرس بقیه ی خونه ها توی خونه ی قبلیشونه !
    3:برای همین اول آدرسی که داخل Start ذخیره شده رو کپی می کنیم توی t تا Start دست نخورده بمونه و خراب نشه و t این شکلی میشه :


    4:حالا با استفاده از t شروع می کنیم به بررسی مقدار خونه های لیست و چون خونه ها بر اساس مقدار مرتب شدند باید انقدر بریم جلو تا یک خونه ای پیدا کنیم که خونه جلوئیش مقدارش بیشتر از item باشه و یا اینکه خونه ی بعدیش null باشه که معنیه این حرف اینه که t آخرین عنصر از لیست هستش !
    5: اجازه بدید شکل عنصر t رو درست قبل و بعد از اجرای دستور t=t.next ببینیم :
    قبل از اجرا :

    که در این حالت آدرس اون خونه ای که داخلش نوشته I داخل t بود !
    و t.next یعنی خونه ی بقلیه خونه ی I آدرس خونه ی II رو در خودش داشت .
    حالا هر چی داخل t.next هست رو کپی میکنیم داخل خود t (اون خونه ای که زیرش نوشته t)و حالا این شکلی میشه :

    6:همون طور که میدونید کنترل اجرا کننده ی برنامه وقتی از یک حلقه ی while بیرون میاد که شرط حلقه false شده باشه .شرط حلقه ی ما هستش :

    t.next != null && t.next.info < item

    یعنی اگر به جائی برسیم که
    - خونه ی بعدی t null بشه یا به عبارتی t خونه ی آخر باشه
    و یا
    - اندازه ی info توی خونه ی بعدی t کوچیکتر یا مساوی باشه با مقداری که ما میخوایم داخل لیست قرار بدیم
    وقوع هر یک از اتفاقات بالا منجر به این میشه که شرط حلقه false بشه و از حلقه خارج بشیم !!
    وقتی میرسیم به خط 6 نمیدونیم به علت کدوم یکی از اتفاقات بالا از حلقه خارج شدیم پس باید بررسی کنیم برای همین میگیم :

      if (t.next == null)

    یعنی اگر خونه ی بعدیه t مقدارش null بود که معنیش اینه t عنصر آخر هستش و تنها کافیه که next مربوط به t رو وصل کنیم به عنصر جدید این شکلی :

    [/align][/align]اون فلش قرمز وقتی ایجاد شد که نوشتیم :

     t.next = p;


    اما اگر به انتهای لیست نرسیده باشم پس
    (t.next == null)

    مقدارش false میشه و وارد دستورات if نمیشیم و میریم سراغ else :

    8:

    else//8
    {
    p.next = t.next;//9
    t.next = p;//10
    }


    و یعنی توی همچین وضعیتی هستیم :


    و حالا کد داخل else اجرا بشه تا از این شکل فعلی به شکلی که میخوایم در بیاد یعنی p داخل لیست قرار بگیره !
    9 : اول این اجرا میشه تا p به لیست وصل بشه :

     p.next = t.next;

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

    10:حالا باید لیست رو هم به p وصل کنیم برای همین این کد رو مینویسیم :
      t.next = p;

    و اجرای این کد هم موجب این تغییرات میشه و به وجود اومدن اون فلش قرمز و حذف شدن اون فلش زرد :
    6 کاربر مقابل از Mahdi عزیز به خاطر این پست مفید تشکر کرده اند.
    azin.ghasemii  (06-14-2012),
    miss parisa  (04-03-2013),
    omid22  (10-20-2013),
    software  (11-02-2012)

  4. #4
    sajadi
    غریبه

    اشکال از لیست پیوندی؟؟؟

    سلام ببخشید من متوجه نمیشوم که وقتی مثلا مینویسید s.next چه وقتی منظورتان نود بعد
    از s است و چه وقتی منظورتان فیلد next از خود نود s است؟

  5. #5
    مدیرکل Mahdi آواتار ها
    تاریخ عضویت
    Nov 2011
    نوشته ها
    565
    تشکر
    570
    تشکر شده 1,038 بار در 371 ارسال

    Re: اشکال از لیست پیوندی؟؟؟

    نقل قول نوشته اصلی توسط sajadi
    سلام ببخشید من متوجه نمیشوم که وقتی مثلا مینویسید s.next چه وقتی منظورتان نود بعد
    از s است و چه وقتی منظورتان فیلد next از خود نود s است؟
    سلام
    هر موقع نوشتیم s.next منظورمون یک چیز بیشتر نیست !
    مقدار فیلد next از خود نود s هست !
    حالا این مقدار چیه ؟آدرس خونه ی بعد از نود s هستش !
    دقیقا منظور اینه :

    اون خونه پائینی رو ببین زیرش نوشتم s اون مثلا همون Start هستش که داخل آدرس عنصر اول از حافظه ذخیره میشه !
    s.next هم یک فیلدی از شی Node هست که از نظر ظاهری و باطنی کاملا شبیه به خود s هست !
    پیشنهاد می کنم بخش اول مطالب من که توی همین صفحست (یکم بالاتر) رو حتما بخونید !
    ابهاماتتون قطعا بر طرف میشه و ضمنا یادگیری مفهوم متغیر رفرنس در کار کردن با سی شارپ خیلی خیلی ضروری هستش !
    2 کاربر مقابل از Mahdi عزیز به خاطر این پست مفید تشکر کرده اند.
    f_gol  (11-10-2012),
    miss parisa  (04-03-2013)

  6. #6
    SCORZENI
    غریبه

    RE: اشکال از لیست پیوندی؟؟؟

    نقل قول نوشته اصلی توسط Mahdi
    نقل قول نوشته اصلی توسط sajadi
    سلام ببخشید من متوجه نمیشوم که وقتی مثلا مینویسید s.next چه وقتی منظورتان نود بعد
    از s است و چه وقتی منظورتان فیلد next از خود نود s است؟
    سلام
    بخش سومش رو می نویسم سوال شما هم جواب داده میشه .

    با درود
    بی صبرانه منتظر بخش سوم این مبحث ارزشمند هستم
    امیدوارم که به لطف شما این مبحث هرچه زودتر کامل شود
    کاربر مقابل از SCORZENI عزیز به خاطر این پست مفید تشکر کرده است:

    azin.ghasemii  (06-14-2012)

  7. #7
    fateme
    غریبه
    خیلی ممنون عالی بود خیلی خوب توضیح داده بودین
    فقط یه سوال!
    تو بخش سوم همون اول برنامه اونجایی که داره کلاس نود رو تعریف میکنه public Node next; دقیقا چیکار میکنه؟
    ویرایش توسط fateme : 06-19-2012 در ساعت 01:55 AM
    کاربر مقابل از fateme عزیز به خاطر این پست مفید تشکر کرده است:

    Mahdi  (06-19-2012)

  8. #8
    مدیرکل Mahdi آواتار ها
    تاریخ عضویت
    Nov 2011
    نوشته ها
    565
    تشکر
    570
    تشکر شده 1,038 بار در 371 ارسال
    نقل قول نوشته اصلی توسط fateme نمایش پست ها
    خیلی ممنون عالی بود خیلی خوب توضیح داده بودین
    فقط یه سوال!
    تو بخش سوم همون اول برنامه اونجایی که داره کلاس نود رو تعریف میکنه public Node next; دقیقا چیکار میکنه؟

    متغیر رفرنسی ایجاد میکنه به نام next و از جنس Node برای اینکه با استفاده از اون بتونه آدرس گره بعدی لیست پیوندی رو داخل خودش ذخیره کنه .
    به یک دوست جهت انجام امور طراحی وب سایت نیاز دارم .
    آموزش از من
    همراهی و کمک از شما
    2 کاربر مقابل از Mahdi عزیز به خاطر این پست مفید تشکر کرده اند.
    arezoo razmjoo  (06-26-2012)

  9. #9
    عضو تازه software آواتار ها
    تاریخ عضویت
    Sep 2012
    نوشته ها
    9
    تشکر
    34
    تشکر شده 14 بار در 10 ارسال
    خسته نباشید
    من دقیقا متوجه نمیشم قسمت 9 و 10 چیکار میکنه؟ البته میتونم بنویسمشون ولی فقط حفظشون کردم.
    ویرایش توسط software : 11-02-2012 در ساعت 01:35 AM
    کاربر مقابل از software عزیز به خاطر این پست مفید تشکر کرده است:

    Mahdi  (11-02-2012)

  10. #10
    عضو تازه software آواتار ها
    تاریخ عضویت
    Sep 2012
    نوشته ها
    9
    تشکر
    34
    تشکر شده 14 بار در 10 ارسال
    نقل قول نوشته اصلی توسط software نمایش پست ها
    خسته نباشید
    من دقیقا متوجه نمیشم قسمت 9 و 10 چیکار میکنه؟ البته میتونم بنویسمشون ولی فقط حفظش کردم.
    نه، هیچی خودم متوجه شدم
    2 کاربر مقابل از software عزیز به خاطر این پست مفید تشکر کرده اند.
    Mahdi  (11-02-2012)


صفحه 1 از 2 12 آخرینآخرین

موضوعات مشابه

  1. انتقاد
    توسط MOAL در انجمن انتقاد و پیشنهاد
    پاسخ: 1
    آخرين نوشته: 10-08-2012, 07:44 PM
  2. مثال از لیست پیوندی یک طرفه
    توسط Mahdi در انجمن مثال های بیشتر از مباحث ساختمان داده
    پاسخ: 5
    آخرين نوشته: 02-24-2012, 03:16 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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

test