توصه می شود اول مبحث ساختمان ها را از جلسه دهم مطالعه نمایید.

لیست پیوندی

در زبان برنامه نویسی c , ما ۲ نوع لیست پیوندی داریم.۱) یک پیوندی ۲) دو پیوندی یا حلقوی . ما فقط لیست پیوندی یک پیوندی را مورد بررسی قرار می دهیم. لیست پیوندی شامل تعدادی گره یا node است که هر گره به طور کلی به دو قسمت تقسیم میشوند. بخشی شامل اطلاعاتی که ما میخواهیم نگه داری کنیم و بخشی که آدرس گره بعدی را به وسیله اشاره گر دارا میباشد.

تعریف گره لیست پیوندی در c

برای تعریف لیست پیوندی از دستور struct استفاده میشود. زیرا هر گره لیست پیوندی یک ساختمان است.برای مثال تعریف گره ای از لیست پیوندی که شامل نام و شماره دانشجویی می باشد به صورت زیر است.

} struct node

;int stno

;[۲۰]char name

;struct node ∗link

;{

توضیح کد بالا: اول یک ساختمان به نام node ایجاد کردیم که شامل شماره دانشجویی (stno) , نام دانشجو ([۲۰]name) و قسمت لینک است. همانطور که در مبحث اشاره گرها گفته شد هر اشاره گر باید از جنس متغیری باشد که با آن اشاره میکند. در اینجا قرار است link به ساختمان بعدی اشاره کند که جنس آن هم struct است .پس ما باید اشاره گر link را از جنس struct node تعریف کنیم.

پیوند دادن گره های لیست پیوندی

به مثال زیر توجه فرمایید :

; struct node ∗p , ∗q

p=(struct node ∗ ) malloc (sizeof(struct node));

q=(struct node ∗ ) malloc (sizeof(struct node));

p->stno = 100;

strcpy(p->name , “ali”);

q->stno = 200;

strcpy(q->name , “ahamd”);

p->link=q;

q->link=NULL;

توضیح کد بالا : ابتدا دو اشاره گر از نوع struct node تعریف شده است. سپس به هر دو اشاره گر توسط تابع malloc حافظه ای به اندازه struct node داده شده است. در ادامه قسمت دیتای هر دو متغیر با مقادیری پر شده است. برای اتصال دو گره باید قسمت link یکی را با آدرس گره ی بعدی پر کرد و link گره ی دوم را NULL کرد تا به جایی اشاره نکند.

نکات:

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

پیمایش در لیست پیوندی توسط بخش link صورت میگیرد.

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

سورس کد ۴۵ 
سورس کد ۴۶
سورس کد ۴۷

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

پاسخ دهید

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