صفحه 1:
پشته و صة
پیوندی
صفحه 2:
رئوس مطالب
*مشگل: چه کار کنیم که لیستهای پیوندی کارآمدتر
شوند؟
" لیستهای دو پیوندی
" پیادهسازی لیست پیوندی پشته
*پیادهسازی cand پیوندی صف
دقت کنید که قبلاً نسخه ی آرایه ای صف و پشته را
دیدهایم.
صفحه 3:
مشكلات ليست تک Sign
head tail
فقط در یک جهت می توان حرکت کرد.
*_ درهنگام حذف با اضافه کردن باید نود قبلی را به خاطر داشته
باشیم.
*_ در کدنویسی باید حواسمان به ابتدا و انتهای لیست باشد که
منجر به توليد 14 های زیادی می شود.
صفحه 4:
Oo) هو
ji.
ou |
۱ previ
5
(106
صفحه 5:
بود:ساخنگی
“اعمال حذف و افزودن راحتتر خواهند بود. چون
هميشه در وسط ليست اتفاق مى افتند.
dummy head dummy tail
node
node
صفحه 6:
ایجاد یک لیست پیوندی دوپیوندی
*نودهای head وا را ایجاد کنید.
* tNode.prev = hNode
* hNode.next = tNode
صفحه 7:
ادامه ... (ایجاد لیست دو پیوندی))
مقدار 7620 را برابر ۱۵06 و 2 را برابر
6 قرار دهید.
صفحه 8:
افزودن یک نود جدید
اضافه كردن نود جديد بعد از نود م.
tail
New node
صفحه 9:
ادامه ... (افزودن یک نود جدید)
* مقدار پیوند 076۷ نود جدید را برابر 2 قرار دهید.
p tail
New node
صفحه 10:
ادامه ... (افزودن یک نود جدید)
؟ مقدار 71626 نود جدید را برابر 0.06۷۶ قرار دهید.
ite
im!
New node
صفحه 11:
ادامه ... (افزودن یک نود جدید)
* مقدار 0./166:/0۲6۵۷ را برابر نود جدید قرا دهید.
tail
صفحه 12:
ادامه ... (افزودن یک نود جدید)
" مقدار 0.77626 را برابر نود جدید قرار دهید.
صفحه 13:
کد مربوط a: افزودن نود جدید
public void Insert(DNode p, Object item)
1
DNode newNode = new Dnode(p, p.next, item);
newNode.next.prev = newNode;
p.next = newNode;
count ++;
صفحه 14:
صفحه 15:
ادامه ... (حذف یک نود)
" مقدار 0./162.076۷ را برابر ۵.0۲6۷ قرار دهید.
p tail
صفحه 16:
ادامه ... (حذف یک نود)
؟ مقدار 0۰۵۲۵۷۰76۵۲۴ را برابر ۵.06۷ قرار دهید.
p tail
صفحه 17:
ادامه ... (حذف یک نود)
" حال می توانید نود 0 را حذف کنید.
tail
صفحه 18:
کد حذف نود
Object remove(DNode p)
1
Object item = p.value;
p.next.prev = p.prev;
p.prev.next = p.next;
count --;
return item;
صفحه 19:
ليست مدور
*آخرين لينك به اولين لينى بر مى كردد.
- يعنى بيوند آخرين لينك به اولين نود اشاره مى كند.
صفحه 20:
بیادهزساری رلیست پجوندی یه
9 دیگر نیازی به دانستن حداکثر
اندازه ی پشته نداریم.
© هرجا لازم شد به نود جديد
حافظه تخصيص مى دهيم.
9
م
رد
"اب
0
3
top
.يشته همراه با افزومن يا حذف بزرگ و کوچک می شود
stack
صفحه 21:
پیاآدهساری لسیب :پیویدی بطلجه.
" نودها به ابتدا اضافه می شوند.
" نودها از ابتدا برداشته می شوند.
صفحه 22:
Push Joc
؟اضافه کردن یک عنصر به ابتدای پشته
صفحه 23:
(... aolol) Push Joc
* ایجاد نود جدید با مقدار ۵.
*پیوند دادن نود جدید به ابتدای پشته.
New node——? d null
New node
صفحه 24:
(... aolol) Push Jos
* مقدار 0۴ باید به نود جدید اشاره کند.
صفحه 25:
Pop عمل
صفحه 26:
LinkedStack Implementation
public class LinkedStack implements StackPT
1
//instance variables
۱۱۵۲۱۷۵۸۵ methods, classes
//public methods
11
صفحه 27:
ool, سازى ليست ييوندى صف
؟دو عملکرد اساسی:
wae tail a492)S adlol :Enqueue *
«auc head j19i> :Dequeue *
*عملکردهای دیگر:
isEmpty *
isFull * ندایيم.
5126
صفحه 28:
خلاصه ليست ييوندى
" حافظه ی مصرفی به اندازه ی مورد نیاز است.
*کار با داده ها (مثل افزودن و حذف) کارآمدتر
است.
*از آرایه بهتر است.
؟ کار با لیست دوپیوندی راحتتر است.
" می توان پشته و صف را با لیست پیوندی پیاده
کرد.