آموزش برنامه نویسی با c++ سی پلاس پلاس
تمرین مثال رشته ها معکوس در c++
4 اردیبهشت 1400
آموزش برنامه نویسی با c++ سی پلاس پلاس
تخصیص حافظه پویا دستور new delete در c++
8 اردیبهشت 1400
Show all

پیاده سازی سورس کد لیست پیوندی در c++

آموزش برنامه نویسی با c++ سی پلاس پلاس

پیاده سازی سورس کد لیست پیوندی در c++ سی پلاس پلاس

 

در این درس نحوه ایجاد و پیاده سازی با سورس کد لیست پیوندی در c++ و چگونگی کار با لیست پیوندی در c++ را آموزش خواهیم داد.

لیست پیوندی در c++ زنجیری از اشاره گرهای دو بخشی میباشند که در هر کدام از گره های آن آدرس گره بعدی را لیست را در خود خواهد داشت .

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

بنابراین میتوانیم ساختاری از سورس کد لیست پیوندی ایجاد نماییم . با این روش که در هر بخش یا گره در لیست پیوندی در c++ اضافه بر داده های اصلی آدرس آن گره بعدی را همچنان نگه خواهیم داشت.

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

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

struct linkt_list
{
   .
   .  اطلاعات گره
   .
   linkt_list *next;
};

 

نکته :

گره next اشاره گری خواهد بود که به گره ی بعد از خود اشاره می نماید .

پیاده سازی سورس کد لیست پیوندی در c++ سی پلاس پلاس

اکنون به مطلب زیر توجه کنید :

میخواهیم برنامه ای بنویسیم که تعدادی گره را با استفاده از لیست پیوندی ایجاد نماید . ( با ورود عدد صفر دریافت اطلاعات به اتمام میرسد )

struct linkt_list
{
   int data;
   linkt_list *next;
};
void main()
{
   int a;
   link_list *p , *start=0 , *end=0;
   cin>>a;
   while(a)
     {
        p= new linkt_list;
        if( !p )
          {
            puts(" حافظه کافی وجود ندارد " );
            exit(0);
          }
        p -> data=a;
        p -> next=0;
        if( !start )
        start= end= p;
        else
          {
             end -> next=p;
             end=p;
          }
        cin>>a;
     }
}

نکته :

در برنامه فوق p گره جدید و start و end به اولین گره و آخرین گره لیست پیوندی در c++ اشاره می کند ، هنگامی که لیست خالی باشد start و end میبایست Null باشند.

برای مثال فرض می کنیم یک لیست پیوندی با ساختار تعریف شده مثال بالا داریم ؛ اکنون تابعی مینویسیم که آدرس شروع آن لیست را از ورودی دریافت کرده و داده های موجود در گره های آن را در صفحه چاپ کند :

void print( linkt_list  *srart)
{
   linkt_list *p=start;
   while(p)
     {
        cout<<p -> data;
        p=p -> next;
     }
}

 

نکته : این برنامه از روش فراخوانی بوسیله مقدار عملیات را انجام میدهد. مقدار start  آدرس شروع آن لیست میباشد که به این تابع ارسال میگردد و آنجا در اشاره گر لوکال start قرار میگرد .

مثال :

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

void f(link_list *start)
{
   link_list *p=start , *h;
   while(p)
     {
        h=p -> next;
        delete p;
        p=h;
     }
}

نکته مهم : بعد از اجرای تابع فوق باید در start مقدار null قرار گرفته شود .

 

فروش نرم افزار تشخیص پلاک خودرو و راهبند هوشمند دلتا

شرکت مهندسی اندیشه تراشه ویرا

تلفن تماس : 09120613870-02176490358

 

مدیر کل سایت
مدیر کل سایت
برای رسیدن به هدفم میلیونها کیلیومتر اسکرول کردم و این راه همچنان ادامه دارد.

دیدگاهتان را بنویسید