Presentation is loading. Please wait.

Presentation is loading. Please wait.

پشته و صف پیوندی Give qualifications of instructors: DAP

Similar presentations


Presentation on theme: "پشته و صف پیوندی Give qualifications of instructors: DAP"— 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 رئوس مطالب مشکل: چه کار کنیم که لیستهای پیوندی کارآمدتر شوند؟ لیستهای دو پیوندی پیاده‌سازی لیست پیوندی پشته پیاده‌سازی لیست پیوندی صف دقت کنید که قبلاً نسخه ی آرایه ای صف و پشته را دیده‌ایم.

3 مشکلات لیست تک پیوندی tail head node1 node2 node3 فقط در یک جهت می توان حرکت کرد. در هنگام حذف یا اضافه کردن باید نود قبلی را به خاطر داشته باشیم. در کدنویسی باید حواسمان به ابتدا و انتهای لیست باشد که منجر به تولید if های زیادی می شود.

4 هر نود دو ارجاع دارد. یک نود در لیست دوپیوندی Node next prev previous
following Node value

5 نود ساختگی اعمال حذف و افزودن راحتتر خواهند بود. چون همیشه در وسط لیست اتفاق می افتند. dummy head node dummy tail node null null value null null

6 ایجاد یک لیست پیوندی دوپیوندی
نودهای head و tail را ایجاد کنید. آنها را به هم پیوند دهید. tNode.prev = hNode hNode.next = tNode null null null null null null hNode tNode null null null null hNode tNode

7 ادامه ... (ایجاد لیست دو پیوندی))
ادامه ... (ایجاد لیست دو پیوندی)) مقدار head را برابر hNode و tail را برابر tNode قرار دهید. tail head null null null null hNode tNode

8 اضافه کردن نود جدید بعد از نود p.
افزودن یک نود جدید اضافه کردن نود جدید بعد از نود p. p tail head null node null null item null null New node

9 ادامه ... (افزودن یک نود جدید)
مقدار پیوند prev نود جدید را برابر p قرار دهید. null item New node node head tail p

10 ادامه ... (افزودن یک نود جدید)
مقدار next نود جدید را برابر p.next قرار دهید. New node node null head item p tail

11 ادامه ... (افزودن یک نود جدید)
مقدار p.next.prev را برابر نود جدید قرا دهید. p tail head null node null null item

12 ادامه ... (افزودن یک نود جدید)
مقدار p.next را برابر نود جدید قرار دهید. p tail head null node null null item

13 کد مربوط به افزودن نود جدید
public void Insert(DNode p, Object item) { DNode newNode = new Dnode(p, p.next, item); newNode.next.prev = newNode; p.next = newNode; count ++; }

14 حذف یک نود حذف نود p node null head tail p

15 مقدار p.next.prev را برابر p.prev قرار دهید.
ادامه ... (حذف یک نود) مقدار p.next.prev را برابر p.prev قرار دهید. node null head tail p

16 مقدار p.prev.next را برابر p.next قرار دهید.
ادامه ... (حذف یک نود) مقدار p.prev.next را برابر p.next قرار دهید. node null head tail p

17 حال می توانید نود p را حذف کنید.
ادامه ... (حذف یک نود) حال می توانید نود p را حذف کنید. null head tail

18 کد حذف نود Object remove(DNode p) { Object item = p.value; p.next.prev = p.prev; p.prev.next = p.next; count --; return item; }

19 آخرین لینک به اولین لینک بر می گردد.
لیست مدور آخرین لینک به اولین لینک بر می گردد. یعنی پیوند آخرین لینک به اولین نود اشاره می کند. current node1 node2 node3

20 پیاده سازی لیست پیوندی پشته
push pop پشته همراه با افزودن یا حذف بزرگ و کوچک می شود. D دیگر نیازی به دانستن حداکثر اندازه ی پشته نداریم. هر جا لازم شد به نود جدید حافظه تخصیص می دهیم. top E B A stack

21 پیاده‌سازی لیست پیوندی پشته
نودها به ابتدا اضافه می شوند. نودها از ابتدا برداشته می شوند. top a b c null push pop

22 اضافه کردن یک عنصر به ابتدای پشته
عمل Push اضافه کردن یک عنصر به ابتدای پشته top a b c null

23 عمل Push (ادامه ...) New node top New node ایجاد نود جدید با مقدار d.
پیوند دادن نود جدید به ابتدای پشته. New node d null top a b c null New node d

24 عمل Push (ادامه ...) top New node top a b c null d a b c null d

25 عمل Pop حذف یک عنصر از پشته top a b c null top a b c null a

26 LinkedStack Implementation
public class LinkedStack implements StackPT { //instance variables //private methods, classes //public methods //… }

27 پیاده سازی لیست پیوندی صف
دو عملکرد اساسی: Enqueue: اضافه کردن به tail صف. Dequeue: حذف از head صف. عملکردهای دیگر: isEmpty isFull نداریم. Size

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


Download ppt "پشته و صف پیوندی Give qualifications of instructors: DAP"

Similar presentations


Ads by Google