موضوع پروژه: لیست پیوندی دو طرفه در سی شارپ #C |نسخه نرم افزار:visual studio|
لیست پیوندی دو طرفه
لیست پیوندی دوطرفه یک ساختار داده ی به هم پیوسته است .هرگره از دو بخش تشکیل شده که یک مرجع به گره قبل و گره بعد در سری گرهها است که به آن پیوند میگویند. قسمتهای next (بعدی) و previous (قبلی) .میتوان به این شکل درک کرد که دو لیست پیوندی یک طرفه با اطلاعات و مقادیر یکسان داریم که در جهت عکس یکدیگر هستند.
برای پیاده سازی گره داریم:
Class Node
{
data; // داده های مربوط به هر گره
Node next // به نود بعدی اشاره می کند
Node previous به نود قبلی اشاره می کند //
}
لیست پیوندی دارای دو اشاره گر خاص می باشد . یکی با نام FirstNode که به ابتدای لیست و دیگری LastNode که به انتهای لیست اشاره می کند. پیاده سازی این لیست به صورت زیر می باشد :
class DoublyLinkedList {
DoublyLinkedNode firstNode
DoublyLinkedNode lastNode
}
اعمال بر روی لیست های دوطرفه :
پیمایش ( به صورت روبه جلو )
Node *P=FirstNode;
While(p->next!=NULL){
(do something with p->data)
p=p->next;
}
پیمایش ( به صورت روبه عقب )
Node *p=LastNode;
While(p->Previous!=NULL)}
(do something with p->data)
P=p->previos;
}
افزودن یک نود (پس از نودی خاص)
Node *NewNode = new Node; ایجاد نود جدید //
If(node->previous!=NULL){
NewNode->next=Node;
NewNode->Previous=Node->Previous;
Node->Previous->Next=NewNode;
Node->Prevous=NewNode;
}
Else{ اضافه کردن به ابتدای لیست //
NewNode->next=Node;
NewNode->Previous=NULL;
Node->previous=NewNode;
FirstNode=NewNode;
}
حذف یک نود (بعد از نودی خاص)
Node->next=Node->next->next;
Node->next ->previous=Node;
Destroy nextNode
Slp7.png