Presentation is loading. Please wait.

Presentation is loading. Please wait.

ساختمان داده ها لیستهای پیوندی

Similar presentations


Presentation on theme: "ساختمان داده ها لیستهای پیوندی"— Presentation transcript:

1 ساختمان داده ها لیستهای پیوندی
ساختمان داده ها لیستهای پیوندی Give qualifications of instructors: DAP teaching computer architecture at Berkeley since 1977 Co-athor of textbook used in class Best known for being one of pioneers of RISC currently author of article on future of microprocessors in SciAm Sept 1995 RY took 152 as student, TAed 152,instructor in 152 undergrad and grad work at Berkeley joined NextGen to design fact 80x86 microprocessors one of architects of UltraSPARC fastest SPARC mper shipping this Fall

2 مشکل: آیا می توان داده ها را در ساختاری غیر از آرایه ذخیره کرد؟
مرور مشکل: آیا می توان داده ها را در ساختاری غیر از آرایه ذخیره کرد؟ اشیاء مستقل دارای انعطاف بیشتری هستند. از ارجاع برای پیدا کردن همسایه ها استفاده کنیم. تکرارگرها در لیستهای پیوندی اهمیت فراوانی دارند. امکان جستجو در بین اشیاء لیست. نسبت به آرایه پیاده سازی آسانتری دارد. اما درک بصری آن مشکل تر است. credential: bring a computer die photo wafer : This can be an hidden slide. I just want to use this to do my own planning. I have rearranged Culler’s lecture slides slightly and add more slides. This covers everything he covers in his first lecture (and more) but may We will save the fun part, “ Levels of Organization,” at the end (so student can stay awake): I will show the internal stricture of the SS10/20. Notes to Patterson: You may want to edit the slides in your section or add extra slides to taylor your needs.

3 پیاده سازیArrayList – حذف یک آیتم
Operation: delete(2) A 1 2 maxsize-1 3 4 B C D E Remove an item at position 2 pos Count=4 pos=2 Count=5 پیاده سازی حذف و اضافه کردن عنصر سخت و کند است. باید حداکثر اندازه ی آرایه را از قبل بدانیم. اگر آرایه پر شد، باید اندازه ی آرایه را تغییر دهیم. بعضی اوقات تخصیص n عنصر متوالی حافظه امکان پذیر نیست.

4 یک پیاده سازی دیگر از لیست.
لیست پیوندی b a c null فقط به میزان لازم حافظه مصرف می کند و می توان در صورت لزوم به صورت دینامیک حافظه مصرفی را تخصیص داد. نیازی به حرکت اشیاء وجود ندارد.

5 مزایای لیست پیوندی a b c d e null
نودها می توانند در هر جای حافظه باشند. آدرس نود بعدی در شی جاری ذخیره می شود و رفتن به نود بعدی آسان است. حذف یا اضافه کردن آیتمها مستلزم حرکت بقیه ی آیتمها نیست. Object a b c d e null

6 لیست پیوندی تک پیوندی (SLList) هر نود دو فیلد دارد:
لیست پیوندی ساده لیست پیوندی تک پیوندی (SLList) دنباله ای از نودها هر نود دو فیلد دارد: آیتم. آدرس نود بعدی. b a c null head مقدار این نود برابر a و یک لینک به نود b دارد.

7 تعریف نود یک نود انتزاعی تعریف کنید: مثالی از یک نود Employee .
private class Node { private Object item; Node next; } مثالی از یک نود Employee . Employee e;

8 لیست پیوندی تک پیوندی -- head/tail
دو متغییر مهم در لیست های تک پیوندی وجود دارند: head نشانگر شروع لیست tail نشانگر انتهای لیست tail head node1 node2 node3

9 متد Search() در لیست پیوندی
اگر لیست خالی باشد null بر می گرداند. اگر لیست خالی نباشد: از head شروع می کنیم و دنبال نود مورد نظر می گردیم. اگر پیدا شد آنرا چاپ می کنیم. node1 node2 node3 head tail نود مورد نظر

10 متد Size() در لیست پیوندی
اگر لیست خالی بود مقدار 0 را برمی گردانیم. اگر لیست خالی نبود، تعداد عناصر لیست را بر می گردانیم. node1 node2 node3 head tail

11 اضافه کردن یک نود جدید tail newNode head node1 node2 node3 head tail
حالت 1: لیست خالی باشد. head و tail را برابر نود جدید قرار دهید. tail newNode head حالت 2: اگر لیست خالی نیست، جایی که نود باید اضافه شود را پیدا کنید. سه حالت وجود دارد: اضافه کردن به اول لیست. افزودن به آخر لیست. افزودن به وسط لیست. node1 node2 node3 head tail

12 حالت اول: افزودن نود جدید به ابتدای لیست.
tail head head newNode node1 node2 node3

13 حالت دوم:افزودن به وسط لیست.
فرض کنید newNode بین نودهای شماره ی 2 و 3 اضافه می شود. node1 node2 node4 tail head node3

14 حالت دوم:افزودن به وسط لیست.
فرض کنید newNode بین نودهای شماره ی 2 و 3 اضافه می شود. node1 node2 node4 tail head node3 newNode

15 حالت دوم:افزودن به وسط لیست.
فرض کنید newNode بین نودهای شماره ی 2 و 3 اضافه می شود. node1 node2 node4 tail head node3 newNode

16 حالت دوم:افزودن به وسط لیست.
فرض کنید newNode بین نودهای شماره ی 2 و 3 اضافه می شود. node1 node2 node4 tail head node3 newNode

17 حالت سوم: افزودن به آخر لیست.
node2 node3 tail node1 head

18 حالت سوم: افزودن به آخر لیست.
node2 node3 tail node1 head newNode

19 حالت سوم: افزودن به آخر لیست.
node2 node3 tail node1 head newNode

20 حالت سوم: افزودن به آخر لیست.
node2 node3 tail node1 head tail newNode

21 نود مورد نظر هم head و هم tail است.
حالت اول حذف نود نود مورد نظر هم head و هم tail است. head head=null after deletion node 1 tail tail=null

22 نود مورد نظر head است ولی tail نیست.
حالت دوم حذف نود نود مورد نظر head است ولی tail نیست. فرض کنید نود 1 حذف می شود. node2 node3 tail head node1

23 نود مورد نظر head است ولی tail نیست.
حالت دوم حذف نود نود مورد نظر head است ولی tail نیست. فرض کنید نود 1 حذف می شود. tail head node1 node2 node3

24 نود مورد نظر head است ولی tail نیست.
حالت دوم حذف نود نود مورد نظر head است ولی tail نیست. فرض کنید نود 1 حذف می شود. tail head node2 node3

25 نود مورد نظر نه head است و نه tail
حالت سوم حذف نود نود مورد نظر نه head است و نه tail فرض کنید نود 2 حذف می شود. tail head node1 node2 node3 To be deleted

26 نود مورد نظر نه head است و نه tail
حالت سوم حذف نود نود مورد نظر نه head است و نه tail فرض کنید نود 2 حذف می شود. tail head node1 node2 node3 To be deleted

27 نود مورد نظر نه head است و نه tail
حالت سوم حذف نود نود مورد نظر نه head است و نه tail فرض کنید نود 2 حذف می شود. tail head node1 node3

28 حالت چهارم حذف نود نود مورد نظر head نیست ولی tail هست. tail head node1 node2 node3

29 حالت چهارم حذف نود نود مورد نظر head نیست ولی tail هست. tail head node1 node2 node3

30 حالت چهارم حذف نود نود مورد نظر head نیست ولی tail هست. tail head node1 node2

31 اندازه ی لیست دلخواه است. اعمال روی داده ها کارآمد هستند.
خلاصه اندازه ی لیست دلخواه است. اعمال روی داده ها کارآمد هستند. افزودن، حذف کردن و ... پیاده سازی لیست پیوندی از آرایه کارآمدتر است.


Download ppt "ساختمان داده ها لیستهای پیوندی"

Similar presentations


Ads by Google