صفحه 1:
Linked List
Containers
صفحه 2:
Useful Linked List Add-
Ons
۴ آیا می شود تغییراتی در پیاده سازی لیست داد یا متغیبرهایی
ضافه كرد به نحوى كه كار ما به عنوان برنامه نويس اسانتر
شود؟
#۵ متغییری Gly کردن سایز فعلی لیست
"" شمردن تعداد نودها در يك تابع هزينه بر است.
"" اما نكهدارى يك متغيير خيلى راحت است.
ار تا
8 اصافه کردن به انتها را ساده می کند.
صفحه 3:
Tail Pointers
۳ و
بسیار مفید است و دسترسی مستقیم به آخرین نود لیست داریم.
by eke sae renee See Ee eee Seo eect ad
باید به طور مناسب تغییر دهیم.
ات دا U
jfirst=tail=0 *
و
tail = new node ®
لا 1 ,=
و ee
List1 Datal List1 Data2
صفحه 4:
Circular Lists
۴ نک ایده دیکر:
۱
ات در پیاده سازی:
فهميدن اينكه در آخر ليست هستيم:
)3 ال ل "if
۱ eal
و 1 ل
5
صفحه 5:
Circular List
Implementation
می خواهیم ليست پیوندی را برای حلقوی شدن آماده كنيم:
نمى خواهيم كه فقط يك اشاره كر ابتدا داشته باشيم. جرا؟ ""
ا
آخر لیست برویم.
کاوسم یواست اه کی » باز هم مجبوریم تا آخر
pero 1
as
و
مات در تاره تلایا ر الا مراد ور بارا السك راي
صفحه 6:
Circular Linked Lists
Cy eer ees cee see
)اه )دسترسي داشت. لذا داشتن <<
00 Toe
ات۹ ۹
List1 Datal 11561 2
صفحه 7:
Circular Linked List
voidinsertAtFront(List Node <Type> *x)
5
رت ل تا
ل ا لل ا للا
0
0
headlink to oldhead ل ل ا
tail->Cink=x! //pointtailtonewhead
ieee preg He Ny ل ل لت Sep PIED TROL GN 3 te, 0 ES mere One ad
انتها را برابر نود جديد قرار دهيم.
صفحه 8:
Linked List Examples
حال که لیست پیوندی را تعریف کرده ایم لیست پیوندی چه
كاربردهايى دارد؟
ا ا ا ا ا |
"" جه كاربردهاى به خاصيت يويا بودن ليست ييوندى نياز دارند؟
صفحه 9:
Linked List Example
جند جمله ايها "
ل 0 0 7
تعريف جند جمله اى::
... ل ال ل ل ا لي
coef 0 * x°
" مثالها:
1 سرب تلات لك االات
ل كك ريق
صفحه 10:
Polynomials
1
a
مقدار عنصر ذام آرایه برابر ضریب جمله ام چند جمله ای باشد. مثلا
ا ل
* اگر چند جمله ای پراکنده باشد. باید برای ضرایب و توانهایی که وجود
۳9 حافظه تلف کنیم.
ليا 2
۱
ewe) رس رز سا رس رن
خواهيم ديد كه اين روش يك مشكل ديكر دارد.
صفحه 11:
Polynomials
Reser ese ا ا ا ل ا iad
alae iy
4
ارات تور
int exp!
voidinit(int c,int e) (coef=c!exp =e!)
Uf
صفحه 12:
Polynomials
جند جمله اى راربا يك ليست بيوندى از ترمها مدل مى كنيم. "
م0۵ هم
4
private:
LinkedList<Term> poly!
07
صفحه 13:
Polynomials
جمع چند جمله ایها *
Be ap Dec ap Il
2x9 + 3x2 +5
0 ۲ 2 ط کون تور
صفحه 14:
Polynomials
Beal vee ante oa
(Cen ey inne il
.exponent1 == exponent2 si"
CoefficientSum = Coefficient1 + Coefficient2 ®™
006186671511122 !-> 0 اكر "
"" و ترم مربوطه را به جواب اضافه كن.
صفحه 15:
RM
Ene ١
|
صفحه 16:
Polynomials
erecta Cee oe ace ال لك
خود را نشان می دهد. چون نمی توان تعداد ترمهای حاصل
جمع را حدس زد.
"" تعداد ترمهاى حاصل جمع مى تواند صفر باشد.
ee pr a Ta ا 0
"ا پا برابر مجموع سایز هر دو چند جمله ای باشد.
"" نمايش آرايه اى باعث اتلاف حافظه خواهد شد.
"" اما نمايش ليست بيوندى فقط به اندازه نياز مصرف خواهد
کرد.
صفحه 17:
Polynomials
ل Peay Seemeeien niece ena Se)
سربارگذاری کنید.
اراس ساری س صفعت و کار
صفحه 18:
Example: Equivalence
Classes
PERU Con AES Coe 7
د 2 كت
تعریف: ۳
۱
مى 353 كه اين رابطه يك رابطه هم ارزى روى مجموعه 5
near ل ل ل ا 0
صفحه 19:
Equivalence Relations
= Reflexive
هدم
Is < Reflexive? A<A No
Is = Reflexive? A==A Yes
0
114 0 8, لك 2 8 معطا
Is < Symmetric? A<B, then B<ANo
Is = Symmetric? A=B,thenB=A
Yes
صفحه 20:
Equivalence Relations
= Transitive
IfA?BandB?C, thenA?C
Is < transitive? A<B,B<C,A<C Yes
Is = transitive? A=B,B=C,A=C Yes
= بازتابى» متقارن و متعدى است. يس يك رابطه هم ارزى است.
< متقارن و بازتابى نيست. يس يك رابطه هم ارزى انيست.
صفحه 21:
Equivalence Classes
0 ene cia
ارزی افراز کند.
"" بطوريكه؛ به ازاى هر دو عضو يك كلاس مثل < و الا داريم:
x equiv y "
صفحه 22:
Equivalence Classes
و ل
Let our relationship be = mod 3
2
5 mod 3 = 5 mod 3 => 2=2 Yes
Symmetric
5 mod 3 = 8 mod 3, then 8 mod 3 = 5 mod 3
2 = 2, then 2 = 2 Yes
Transitive
5 mod 3 = 8 mod 3, 8 mod 3 = 14 mod 3, then 5
mod 3 = 14 mod 3
R= DO) ever 2 = D, Vas
صفحه 23:
Equivalence Classes
"" كلاسهاى هم ارزى:
ا 0
OCP eae ات د
Mod 3 - 0 ۷۲00 3 < 1 Mod
3 < 2
0369140
20211
صفحه 24:
Equivalence Classes
wd
* تعدادی رابطه هم ارزی داده شده اند. کلاسهای هم ارزی متناظر را پیدا
Relations: 0 =4,3=1,6=10,8=9,7
4,6=8,3=5,2=11,11=0=
Classes: {0,2,4,7,11}, {1,3,5,},
{6,8,9,10}
صفحه 25:
Equivalence Classes
"" مى توانيم 0 2 در 2 !١( تعداد عناصر) درست
Oe oly ce PARR a er et
ما اکر عناصر آن صفر خراهند بود.
"" به جاى آن مى توانيم براى هر عنصر يك ليست ييوندى
درست كنيم كه شامل تمام اعضاى هم ارز أن در ليست هم
۳۳
و
* رابه لس لصافه کید
eS لیات NS a!
صفحه 26:
Equivalence Classes
صفحه 27:
Equivalence Classes
Pete = CMCL SAS nese ا
کنید و با -۱ پر کنید:
ل an re ل ا ل تا ل ب
2 را چاپکرو محمتناظر در آرلیه را عاهتسز
رت دعر کر رل سم رب دی که
هستند)» اگر محل عنصر در آرایه علامت نخورده بود
ee ار ار
aeRO acres
صفحه 28:
Equivalence Classes
= First Steps of Test Run on Previous Data
Out Array
رم 11 11
۳3
۲ و ۲
ao
ور زره زو gata ta)
ee
1 Meh gilt einy
اف
Stack
Top->11
Top->4,11
Output
NC: 0
NC: 0,11
NC: 0,11,4
صفحه 29:
Complexity of
Equivalence Class
Operations
ل
مقدار دهى آرايه ليستها و آرايه خروجى: )0( ]10
يردازش هر جفت: ؟ برابر تعداد رابطه ها: CO] G04)
يس كلا: (2+20) ©
eae د
BE ~ رديفدر تلام ليستها
در صورتی eel eerie ap Cee oe |
ea ae ه می کنیم (10). به دلیل مشابه هر رابطه هم ارزی
الم
" يس كلا: (2+20)©
صفحه 30:
Doubly Linked Lists
A Ooo aad ار الج 05 بدا در رك
جهت مى توانيم حركت كنيم.
dial ا هستيد. براى رسيدن به محل ششم
مجبوريد كه كل ليست را از اول بيمايش كنيد.
* در این حالت به یک اشاره گر به سمت عقب نيازمنديم.
صفحه 31:
Doubly Linked Lists
* برای حل این مشکل می توان برای هر نود دو اشاره گر (به
|
"" دراين صورت الحاق و حذف از ليست و ديككر دستكاريها در
ليست سخت تر هستند. جون بايد هر دو جهت ليست را تنظيم
نمود.
صفحه 32:
Doubly Linked Lists
01 01 ]ع0 0 انه 1010 / | ؛ 51 ]126 و5ه]هء
class DblList Node
C
friendclass Dbl List |
private:
ل
DblList Node *right, *Ceft!
صفحه 33:
Doubly Linked Lists
class DbCList
۴
public:
//Cistmanipulation
private:
BD) SB BRS NTC ata
1
صفحه 34:
Doubly Linked Lists
Eee | یک نود تمو
یک لیست دوپل حلقوی با سه نود
صفحه 35:
Doubly Linked List
۰ کرد در انار کر A)
p=p->left->right =p->right->Ceft
* یعنی رفتن به جلو و برگشتن به عقب مثل رفتن به عقب و
ا 0
صفحه 36:
Doubly Linked List
void Db List ::Insert(Db(List Node *new,
Db(List Node *current)
4
//insert new after x
new ->left =current!
new->right =current->right !
current->right->Ceft =new!
current->right =new !
> carn ۳
Bit
صفحه 37:
Doubly Linked List
void Dbl List ::Delete(Db(List Node
*toDelete)
4
// delete nodepointedto by toDelete
toDelete->left->right =toDelete->right !
toDelete->right ->Ceft = toDelete->Left !
deletetoDelete!
0 toDelete