ࡱ> po !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnrstuvwxyz{|}~RdO)8r Pictures9PowerPoint Document( fSummaryInformation(q; 0;h9DDD(=""E,DD$偈$<""@DDXHI`y "" ,DD$偈$<""@DDXH矎\Ze^/MS=@kk:_sý)~kR,McSL;,rb7]>sJM׮zk3/%d71t)=\:l䄶ރCٸ0xw4w-[B%N;1f=aIDD6G5{薁]kk姍 $=xC9=ܽg3YS^j%vvLJ&ثvP`grUR;^j=گZt͡Bԛٹ&<ыpС.}ŗx+蕚~zniYU^4Ln#H<DZ&&u" d=PNG  IHDR ^%}gAMAܲ pHYs  IDATxy\T 0 ;ih&嫦yE4u)4[2›Y ޸) 0gs9|3~OF-ِr@DDtGH9{DDTh""XDD@DD XDD@DD XDD@DD XDD@DD XDD@DD l$u徏3^(L9kd'|]eX~hӕ},9=#"Rb*KK:_Cr< N|t],njjb|Ą)3~ؕgس }iyދ6)>'Ye!!nXfښ-ڲ0ơ̈Z%s)^ex:ui# ˏo%GGom=m\RwY;zMWf";8j̦"#+KʬZ7tfәeFn _g=WWx9X\^juuvŔ<܂|@@6tޮ^N -yQouq pqj ȦH4_GM+`xŷj mȺ\=(f t(GJ!bPuyoD\Z&\O[q-C`c[DLt8뾕7{_s5eRZg~98ユm4Irgq6ݴb1 ~--|b ux.L0uBFs67_8KCMZVx[~=8O"#P\h4,޷Xrh593hv qXSڗvú2~ui܇!?)}~J&MM6rrxسнRǷeql'.Zrk~WSf%f՝*Υ_qQH]ջ;us[G.V Dpս"éI'|Fńw{h>*b߿:+)x`plԐA!~tp ZNas?Y_(,1rj!Y'/h!nz&Wr|}nkƁm'<K\0KYEY9,˜IǝfEDT=*Υ|y' [3@/Q=e8bY>[XVheƩ.mg|wxtn>q`jI_:p`? c7:G3vxECNgU>pp6!wզi$%dz.A74ߒ-[۰'j'?=_Wx\z*RcjlT@J# K:j˪4*y'*_T~kN@$,4%k߸{‹ öa>;/p@sf~@Dup2[\2-4|UvLÒt< Zm (~-Y.z}|PQ5  6߳8qSZD<'p˓Oo[;NzYE.:cQǿp8M{Gom_z՘@ *Qޠp.i-+|pĚ,  ǹMu+Ϣu۰ʭ} j֫t9?MoiWO[/*ZX9m~HlPd(xaBWYcGdB>6 `/Z3׆ ¹-OG~D-6m6Tx.YGV5m+йpOێ.bdPjqA `M%"x6i5Wn3RQyܵ:ʜ}$bUkRjseF)k-V9N+"J'WF,%GJmykX~H׫uswPju.̆ ^[yH}7OEDTSdkqQrrt\9^7.>^z][g/VY2%j^!""""Rz """"RPoqޫ "ޜÎz(*9vqUDDTOH끈H끈H끈H끈H끈H끈8{Bpo%WK#34 ;,^BVgh*04ZKDD@DD XDD@DD XDD@DD XDD@DD XDD@DD XDD@DD XDD@DD _m?C) y?D`I3CSـPm_|C410*: aƮaOjg̽G14 Rf9wXgӕ3eF $DUb2DA0i㳺ڿyjEch*04Z`=(_y#iV!5r{Ճ%E ֫qpvquR8pWW߿Vt>ЙĶZf->CSփoFfӉ;Zyt A$V|xq Y=&*b[@@ݎ۩ MC3W N۸cO1fp; u F=15!*n7 MC3݆|G=iȈ}?αha-` $ǩ >h"Q4ƺހ=04 ΰ^ٲ&~вeOI3rJ/mCS Ac:cpT ,@ڜ3͟F MC3F}eoҴ@H|L?~?1m) 5UX@Jd @hNCS `M2=`囯=ڻW;Gp/ !v̤qn*T5Y0)^RzgOowg`y6rjdX/<ݵwW#C) T T Ъ?mT`h*}KDD@DD XDD@DD XDDÜy;OLe04 dMJ>1g{/D\I'n ^4M2/{9 CSd^&Ec7&%rh؟'V|5uyӨ콮zT7CxdI? Eb6wxԯgy^oAgg%LzoFp  MA>3mx-54VCe^ \c^! |? z콡T`h*0zRb_/g͎=QY+RAϙLN&NM‡O `y=wQ MV߹T3|]@pc,9saZV*/9uY/։>sD*w"RS+=`eM U[ M{#_$/x긔<@:z>ytTb,_1%U vTJ,;XȑT]= =`@`@ u{O9cG{O"=S/_ wTS:A#~e+kTHhYn)T}[(zū˛^4&?X׽`3ʛq|䈸D5 0 0 0 0 0 0 0(SIENDB`n"ZAS$g8;PNG  IHDR @^gAMAܲ pHYs   IDATxwTgXv&E,Q؍%c,FK1%z5Ws WM1 c *i hƎ{X`AT} ƌ.|μ;ρvó= e1MK9pwMרmV˿}@{vsk5hCs݂ D=Iы+/?()0h،܄2)At'|"ĒkO߇5L:u,G~yzoů;SC[#fc/凁f;8aaQ`1d,ϹeRMf.}Y Uj&A }R|:k8(>~Kn 6/އ`-^E`5iXXz"ϻ-krs, Fvɱ v_ӳ =BIDDG#>|MrRfaBTº/ܵ B6c?}| ,:PgO+.j-*9J)iQ Um_ M ;;HՀډlqIޭ_n  ͬ-t_櫈]ca\vJRYu]@.=9<{ң29z(ؓk5ՆV*׌|+q,ZطjD /ּKhLU63'"zN1OV3W-;Na4EˆN sB܍E|3wnfO78wW4dߏ/5|mF)li(8EY%H qgW}c Mϥ=yh/^&"*%@w-':wu <4t۶NꐡӇ`ٿ|=דC8Up0QM"}|y[#X4ސcwRfiLPMH)Wnb0d昅bD ]T%۝DDTĚ!~;994#t+·' pQ;ͺs "57Z[DLP[{ eJ04 (V B>#d`hO.""@DDXHI`y "" ,I{|/ZӨX M\XnM;ӨX M\*mq,&(8 sfjI]٨7vTs3wdUFdTAg0Z i\497ZJ v}D@4F;::(# jG%Ч޸kRVDah204ZG *i==jvSNH!TQ Jn`5}G_pV%9+j@Zh,o1ri.54 hT]!ⷛ UkoB7nUϯnClM*E{< |i|#~h㭺^Otzhڛ>7~eJQr=H&mOj[t񧃀㺼9XR1 Gҏ#Ϣ~0[Fkd Mf[lk=o0qEN{~rz+\qro>Ia:n];x^tԾ{aΥח_ݾA/޼djg`)WҺzKN"'1iImoneť/CPBY6QR}tҬeC'h!n.Cq 5p{:TkvF:1RYLj<,V +f%D+ p0}~5ȭ7obe{z yfRQ|;\ ̺쇹;k5g%0SkVZg h.p܅\e5_?_C<= Lٷ3Yu5%G,Oeh0=kRƺϚjG"6iݶUT˩Gz{r};x©S՜}tiԸzZ>X>;[&CٖuAtk`T$ M&C5UpkϢah204ZGDDXHI`y "" ,DD$ T;C*J[$oˬd`hO.""@DDXHI`y "" ,Azzޖ= dUʂN8xEs}Z{FCP BcyRDG]bI:&C҄PJ×2;ws_mʼn2&CP m~ɣo+Vk*hwwW֚Q^ӳM M&P(voąLj}.֞bh204*Yhh9(e:~旨DԈwl}ZPHZ MF MF }DD$Jung`/[#5ۏe M&C XYq-ZFXğ]ʹĥ.~+x84qrPk`vch204Zɥ妧\rVG7ro\s&N3E Z`lSg^9u 7\$kmE9ch204Z9`ybI_.5^oW+N\зv@.^=wjZ<~h:FT%^8-̣qWXHkoRch204ZyayowkƝN;kmGLF|Dϖ,fsNcfN M4eVܜd`h20r !AUڕk4}mEAF aCJXOin@݆ҧu萎5wah204ZayP)/{.pHW_{ޝG7Q/zN& KY*\yY<@D*Tx"r"W^> ׺ WjE--([Mڒ&e(P6m~΁L&{ d2.pm$9ʱۂF(8E;@r5T`h*0zPPr9hwK۰cK3V 7jad-\\k CSփzŏ\z0Q;\5HК"l{SoCSj AAqN@ Y:sڎJ0sFLC ua^ܫ%pEn v(%5T`h5\ ٚӹR`j'TYQ4J9aFDR%!`: @]6*LٮZ~&CSWVbh*04_=p)`=:\Fn>G{{"u CS:\N/_uִh% ޞQT`h*0z6~4}4_eės̞˾:I{j݆iZkSnnTM{Hz6bM&Cū6Ky˥j`oI+0[14ڟAmKЯoӊ}ťB@,i7}jqQZMX MCS{V ir^ MCp=̟5l% MCp= zP04 Qa=)`=)`=:|`kl14 NP_U34 N%""Rz """"Rz """"Rz """"RzFGW$ B[=T`hp;Sws wy3'v,pxV 9DQeR{CSjAYFc/& ҙ"cچ5yߞ Y0`0.,hВ!ݓ6 _xT MV3Xd`{/nƻHOY6씼1;vL?sr|F`M L]9aO 탧/eCSՌz{Υe`q8O &ϙ~^edžLwK>cKn7A1 vO]U5AkjT`h*оIP%!CC}@'F<ݯWWɹhe=rԬO6<;/KEV CS^wT CdIMl?A`X.P*3V'~bE/0e#U8~}VhՂT`hՌ=T3 mg8Vi׮Og9=_x#zN:SSsN+ MVX!;rߍX0|1X;NYsN)OGF/аMk>2[Q MV#ّoO?;y&ET 0HVքC [Od|٪Sp]RhvB}pd aᡀl9{RD7 |<%-QUۗ'th-{Z:ΧRvGƤ_h٬]]{.IJ|sԦy@U GDT!Gir3[R]~1c;oϸi*ʼn|]Luv˫I=MY<1wj7jRz(9%] ^:zN8gKrOO_KNIK(<`{ϽצdRvPt_ˑL3g8f;uyҥs,n}O\Q4a:F c8^=힠Zu0mW=Lɑ= ýmߡG,pdFKNVe![% -cl}ێ+}ix)͏yvkQh(z|#jvYoieJ`%M,mfΫHE,ŻQ :cw꜈1˧`ՃoO(ޘmܗ7F`Òq#YB[RG<xaCQ ؁oއ#}^C=oT~W? wa=;WЏkvB8E9el Łon)}}\&II벹_jX>i 5¿JTn>3ftAwIk7ORhK~JB+ㅢ>fnϣ{Rh("俳{-2,n|3Rg-9~6@Nɳz>=?l?.6_]phv1uܦH`s]*o"ЦފĿ];]. -7ny'Mjm|lPCY_Z^J7-]<,I->}'}|Y^vD睿><5? i'3wDT4p]d*?fvZdhP-rj ѵ˒ʶlG߻K3E_{JϹ/C G|xSSgf݁QvFѼn-t GLv̉y[z.q|iPo}a%  Gh W'e#FfyB{cu̻ K`q{.{IDATW>4&~ٸFh k_l{ \HvCE<#9Ef upz S6{&׳>;Nv:wLu+2FgDD3Us>0k/ E @C>뼜z9߾v(ߐum>VY)/WnzSN(i}B}V{]6/ϝ?+qk Vٙ[(4|Z.s5kBz.3jU\cvեm6Ibُ?5H%l 0pڲ[ ,6t&EDTd,5&g?.n`z><(aa:{^K-\_`4gݪzCDD XDD@DD XDD@DD XDD@DD XDD@DD XDD@DD XDD@DD XDD*A IIENDB`L(   J6"Wagner@cs.ucr.eduN:http://www.cs.ucr.edu/~wagnerH4http://www.cs.ucr.edu/cs12/ 0DTimes New Roman0V 'K DArialNew Roman0V 'K  DWingdingsRoman0V 'K  ` .  @n?" dd@  @@`` ld8     !"$&'()*Ob$&u" d=$۰$۰$۰b$S$g8;"$۰c $ n3f3@8d >$ʚ;+4ʚ;g4UdUd@t@ppp@ <4!d!d-gX<4dddd-gXg4`d`d4@@8p@ pp>___PPT9 h___PPT2001D<4X?-"2003 W L Truppel bCS 14: Intro. Data Structures & Algs. " Lecture 6O =?/Intro to Data Structures & Algorithms: ADT ListWagner Truppel Lecturer, Dept. of Computer Science & Engineering UC Riverside wagner@cs.ucr.edu http://www.cs.ucr.edu/~wagner http://www.cs.ucr.edu/cs14zO  O`a~"Recall ADT Array& \Main advantage Random access in constant time Main disadvantage Fixed size Wait& how about dynamically allocated arrays? Still a problem because when the array gets full, we need to resize it and copy stuff around The resizing can make you run out of memory and the copying stuff around takes O(n) timeZZZ Z.ZZ .   What we need is& & a data structure where we can add and delete items  in the middle without having to shift other items around In order to do so, the items cannot be stored contiguously in memory An ADT providing this kind of service is the ADT List What does a List (aka Linked List) look like? What do we need to link together the items in the list?XUZP  FQSingly-Linked List`Is this picture showing the interface of the ADT List, its implementation, or a little of both ?naZ Digression on pointersA pointer is also an ADT ! It s implemented as addresses in most programming languages supporting them, but the concept of a pointer is just that of an arrow or a link Pointers are what makes linked lists possible   8!&Doubly-Linked List>Just a little more complicated&  Z List Operations(Which operations would we like to have ?)Z)Operation Complexityxnew: constant time, O(1). size: could be O(1) or O(n), depending on how we implement it. isEmpty: also O(1) or O(n), depending on how we implement it. addFirst: O(1) addLast: O(1) if we maintain the pointer last/tail, O(n) if we don t remove: O(n) for singly-linked lists, O(1) for doubly-linked lists On the board& =Z;7" L>Y74Insertions  in the middle $What if we want to insert an element somewhere in the middle of the list? We could use an integer index to specify where to insert the new element insertAt(int index, Type element) but this takes O(n) Besides, its implementation is visible to the user We want something that s faster than O(n) or, if we can t get that, at least something whose implementation is hidden from the user (aka the client)~Z#ZZZ!Z  4Insertions  in the middle If we had a pointer to the element already in the list that will be  shifted (forward or backward), it would be easy insertAfter(Type &here, Type &anItem) takes O(1) for both singly- and doubly-linked lists insertBefore(Type &here, Type &anItem) takes O(n) for singly-linked lists, O(1) for doubly-linked lists But we don t normally have that pointer And even if we did, passing such pointers to the client once again violates implementation hiding What we need is something that uses pointers - so, is aware of the list implementation details - but which hides those details from the clientvZ&Z5Z'ZEZZv P E  bu 7 '6 Back to arrays& Think of array indices& They re integers (that is, values of the data type int) They represent positions of the elements in the array They may be valid or invalid We need something similar for lists List iterator !h$3U$ ,K~   Iterator ADT An iterator is also an ADT Syntax (Interface): get: returns the element we re currently pointing to next:  moves to the next element in the list the iterator is iterating on hasNext: whether we can still call next on the iterator isValid: whether the iterator is still valid (more on this later) Semantics (Axioms) We expect those operations to do what is described aboveZZZZ9Z2G1;9 b  ( p Using an iterator Say you have a list of students and you want to  walk the list to print them out Iterator it = stuList.iterator(); while (it.hasNext()) { Student *s = it.next(); s->print(); } Notice: no implementation details whatsoever ! If someone ever changes the implementation of the iterator or of the list, this code still works just fine and need not be changedRZ9Z$ZZZR9$      bR I Iterator complexity  Ok, iterators are good because they hide the implementation details But are they fast compared with the index approach? Say you want to insert an element at position 100 The index approach must move through the first 100 elements to find the point of insertion So does the iterator approach So it seems that there s no speed gain But& say that you want to do another insertion, at position 103 The index approach must move all over again from the start through the first 103 elements to find the point of insertion The iterator approach just moves 3 positions towards the end of the listtZyZgZZygP  : <Back to Linked ListsNSo who provides the client with an iterator to the list? Well& the list itself So we should add to the List interface the operations first: returns an iterator object pointing to the first element of the list last: returns an iterator object pointing to the last element of the list (for iterators with previous and hasPrevious operations, so we can walk backwards along the list) How about removing elements from the list?ZZ+Z--) 6+b#l A 6  `Removing elementsGiven the element to remove, it s a simple matter to remove it from the list O(1) for doubly-linked lists O(n) for singly-linked lists The problem with removals is: What do we do if there s an iterator pointing to the element about to be deleted?\MZ;ZZRZM;R -Removing elements|The problem with removals is: What do we do if there s an iterator pointing to the element about to be deleted? There are a few choices We invalidate that iterator (remember isValid ?) We make the iterator point to the element after the one being deleted We make the iterator point to the element before the one being deleted It s a choice, people! Answer is not written in stone. Typically, a good choice is to make it point to the next elementZRZZZZZxZR2  xb9 Y  = Summary of ListsWhat you need to know& The differences between singly- and doubly-linked lists How to implement the different operations for both of them The associated trade-offs regarding memory usage and speed gain The complexity of each list operation What an iterator is and how it s used You do not need to know the details of how to implement a list iterator. Doing that right is hard stuff ! Last but not least, you need to know how to draw! Drawing a list is the best way to remember most of this stuff.FZZ, T/PsxHH@Rg(HH(dh   ` www3ff` 3fff` ___>?" dF@,?n<d@uA @ " d`  n?" dd@   @@``PR   @ ` `P0p>> -"2003 W L Truppel bCS 14: Intro. Data Structures & Algs. " Lecture 6 j( = 2  Ne0?"! :    Nd0gֳgֳ ?"P  T Click to edit Master title style! !<  H f0gֳgֳ ?"  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  Nf0gֳgֳ ?"`p  Z*    N`h0gֳgֳ ?"`   n*2    Ni0gֳgֳ ?"`@  \*   N  6n޽h? ? www3ff $Blank PresentationM  -"2003 W L Truppel bCS 14: Intro. Data Structures & Algs. " Lecture 6 =5  ( |  B  N1?"442  Nj0?"! :    Ni0gֳgֳ ?"` D T Click to edit Master title style! !  Hk0gֳgֳ ?"P  D W#Click to edit Master subtitle style$ $  Nl0gֳgֳ ?"`p D Z*    N`n0gֳgֳ ?"`@ D \*     N0*gֳgֳ ?"`  D n*2  N  6n޽h? ?  www3ff  P<f(  < < 02 "P   ה R*   < 02 "   ה T*  r < c $ ?"  ה$ < 0p2 " @ ה RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S < 62 "`P  ה R*   < 62 "`  ה T*  H < 0޽h ? ̙33> `D( @ $  D D 0: "P   ה ACS 14 Lecture 6  D 0X "   ה T*   D 6Y "`P  ה ACS 14 Lecture 6  D 6Y "`  ה T*  H D 0޽h ? ̙33  d\0 (  P   c $2 "P D   c $02 "P  D    <2D :  B  s *޽h ? 3ff   L(  Ll L C `UP  D l L C UP D H L 0޽h ? www3ff   P$( 00// Pr P S 02P  D r P S 2P D H P 0޽h ? www3ff   ( T( 00// Tl T C f  D $ T C A fig1a.pdf 0011DF7FEarth B9B583FF:0`  T T[gֳgֳ ?0 D 0 T H/gֳgֳ ? 0,$D <Actually, this is showing the interface only, as it should !,=Z H T 0޽h ? www3ff   `( 00// `l ` C 0VP  D l ` C P D H ` 0޽h ? www3fft     X( l Xr X S \  D  X T ^gֳgֳ ?0 D  X H^gֳgֳ ? 0 dThe advantage is that deleting an element from the list now takes constant time (more on this later)eZe$  X C A fig1b.pdf 0011DF7FEarth B9B583FF: H X 0޽h ? www3ff   ~v\( F@ \l \ C ^P  D l \ C @10 D  \ H>3gֳgֳ ?0,$D B2new Lists grow and shrink dynamically, so we also need size isEmpty Insertions: addFirst, addLast, and something to add  in the middle Deletions: removeZ4   P2 9H \ 0޽h ? www3ff   d( l dl d C @7P  D l d C `2 D H d 0޽h ? www3ff   h(  hl h C SP  D l h C 0P` D H h 0޽h ? www3ff   l$( 00// lr l S 6P@  D r l S U@ ` D H l 0޽h ? www3ff   p( @  pl p C  *TP  D l p C @%T D H p 0޽h ? www3ff    t( 00// tl t C `)Tp  D l t C 'Tp D H t 0޽h ? www3ff   @|$( 00// |r | S &Tp  D r | S #p D H | 0޽h ? www3ff(   `P( 00// r  S `p  D   S p<$ D H  0޽h ? www3ff   p( 00// r  S Vp  D   S 0Vp$ DPH___PPT2001$ΐ H  0޽h ? www3ff   ( 00// r  S pVp  D   S  'Tp$ DPH___PPT2001$ΐ H  0޽h ? www3ff   (  r  S Up  D   S U$ DPH___PPT2001$ΐ H  0޽h ? www3ff   ( 00// r  S +p  D   S +$ DPH___PPT2001$ΐ H  0޽h ? www3ff tl@H(  HR H 3 <   4r H # 2< @  4  H H 0޽h ? ̙33cxp^RЀ3ÿ lHbP  @AL G@;b `B&VHk }P2m-)j9u+tj'0+-m;r>'0+-tj ?šq0>Hk }P2m-)j9u+tj'0+-m;r>'0+-tj ?šnZ1]iJ:idm MXZa@.n l<Jj6Nnm n BQnknS6nn9MnQ, nBQnjA".nhI(nBQn2Znnnnnmnnnnnn2ZnU& >g,[nqyD5 4 L2KްaB\n0d=t)*-@D)*-tNP$qyD5 4 L2KްaB\n0d=t)*-@D)*-tNP$nZ1]7n`4nnn nnEFnjn BQn!hnK;nn `L*V nBQn(@Z/n0+ fnnkBQn2annnn ninTXnnnnn n2an`"EYnd?"mnqyL9*b ܔZ02Vd4ߍf;>q7tH-hOLH-t(&s#؛ A"qyL9*b ܔZ02Vd4ߍf;>q7tH-hOLH-t(&s#؛ A"nZ1]7n`4n!Mk nnaI*=fnn~ pjkg gggsg{g sjkg gggsg{g?9fnR..Un;,[n97n e,Mnn]nn97nQ,Ene,2@ini,=nC5nO,bngdn~LYa0' /)@ """Y?LYa0' /)@ """Y?@Gmna!&dnc*nn _9n8 nnnjnn_  cg &nn=\nT Qn~,4 0'º4/)e_x? ηw14 0'º4/)e_x? ηwA%]nM>MPn4: gnnnnmTPjV`nneMVmnnX^[SjUabUmgMXnn_WjPWncLancL_nbUjn^ Gnn_,nnC)n4Wnn bUjnmYOfnj3?dn~+ P#&0'W8o 9'}/f /]aT x>ex?   + P#&0'W8o 9'}/f /]aT x>ex?  CGnk"knG@nnnn%0n? gn \68h =n,(Xn* $nn8\n 4Tnn_,n n4Wnn :[g  H]Dn~EA -0'`xnHk}>/3fԷaﴔɒ .Xe<x? ҡJA -0'`xnHk}>/3fԷaﴔɒ .Xe<x? ҡD1hnT cinAR8jnnnd)j4/Za@.n MX^6idmXin,Ej[O8h*gN@jnW?fn l n&]n_,nknn4Wnn :[EJlNnm n nn^6nnn nnn,cnnb0n&Jn LB*1n_,nn4Wnn :[g,[nBQn~ 7`0'n 45}D/)4$f).pgM e 5x? P$7`0'n 45}D/)4$f).pgM e 5x? P$F$ZnDLn7Dng7)nnIDnQ/EFnjn nn^6nnnnnn,hnnd0nlK, Xn! j_,nnen4Wnn :[nd?"mBQn~EsH<' 0'#,n*b9}L/)4$f).p^YE x7-x?܆қ A"EsH<' 0'#,n*b9}L/)4$f).p^YE x7-x?܆қ A"G!#Wn^O2dn@Ah<gnf</aI* .x?X7 ft0<0' t$s9}/)4$f).p#{> .x?X7H#%Tn;,2 angn<;?nnH ;2nR2ln nn^6nA`nnn,hnnd0n@ 5nn8\n:Gn__Hn4WnM:[k&Nn^=n~݀  ݀I%&Xnmaknnhn_7PnY>neknfjnfnmgnken=~$4 ߒ $4 ߒK(*\nl`n7~  K)-aneB7@bn%~ &L+3hnn%~5 >N.Emnnnnnnnnnnn~zV?Vnnnnnnnnnnnnnnnn~XBCgnnnnnnnnnnnnn@~?LYDNnnnn"~ZF`nn%~ 0[HMlnn"~]L^nns~ ^NPknnnnnnnnn~u^O]nnnnnnnnnnnnnnnnn܁~ `RSlnnnnnnnnnnnnnnnnnnnnnnnnn~q}aT`nnnnnnnnnnnnnnnnnH~bVlnnnn"~wcYcnn%~#e\]mnn"~f^fnnF~.f_amnnnnn~hbjnnnnnnnnnnnn~9Miehnnnnnnnnnnnnnnnnnnnnnnnn~jglnnnnnnnnnnnnnnnnn4~arkiknnn$~ "lkmnn~mnn ~7MoqnnM~psnnnnnnnj~tqurnnnnnnnnnnz~6rwvnnnnnnnnnnnm~  syqnn nnnnnnnnn"~i{t{unn$~1u}|nn"~ āwӀsnn"~k ~xӂynn"~!:yӄnn"~ˁ!ҁz҇snn"~{"{҈{nn"~0"L|Ҋnn#~#}ьqnnn#~#~юznnn#~X$pёnnn#~$4ѓonn ~́%ՁЕunn4~%Зnnn~M&hИnnnnnnnnnnnnn~&3Кonnnnnnnnnnnnnnnnnnnn~'Ϝvnnnnnnnnnnnnnn4~'Ϟnnn(~Yˀ'sϟnn~ (CϢn~(Σsn~)Υn^~y)Φnnnnnnnnف~G *f Ψnnnnnnnnnnnnnnn nnnnnnnnn~  *=  Ωnn nnnnnnnnnnn nnnnnnnnnnnnnnnnف~ * ͫtnn nnnnnnnnnnnnnnnnnnnn7~+ͭnnn(~+ͮnn~W+tͯn~,,Qͱn~,1Ͳon~؄,߄̴xn~-̴n~-̶n~b-~̷n~?.b̸n~.D̹n~.˺pn~ԅ.܅˻znv~/˼nnnnnnnnnnnn~/˽nnnnnnnnnnnnnnnnnnnnn~| / ˾nnnnnnnnnnnnn nnnnnnnnnnnnn~_/}˿nnnnnnnnnnnnnnnn+~B0fnn(~'0Pnn~0=n~0on~0wn~͆0׆~n~1Ćn~1n~1n~1n~s1n~c1n~S1tn~F2kn~<2cn~32[n܁~ )22222222 2S ɺnnnnnnnnnnnnnnnnn#~ 2222222222222Lɽnnnnnnnnnnnnnnnnnnnnnnnnnn~ 22222 2D nnnnnnnnnnnnnnnnnnn7~222?nn~ 2=ņn~ 2:Ɔn~27Ɇn~25Ɇn~2ˆn ՜.+,D՜.+,x    'On-screen Showcn-sr Times New RomanArial WingdingsBlank Presentation0Intro to Data Structures & Algorithms: ADT ListRecall ADT ArrayWhat we need isSingly-Linked ListDigression on pointersDoubly-Linked ListList OperationsOperation ComplexityInsertions in the middleInsertions in the middleBack to arrays Iterator ADTUsing an iteratorIterator complexityBack to Linked ListsRemoving elementsRemoving elementsSummary of Lists  Fonts UsedDesign Template Slide Titles 8@ _PID_HLINKS'AHmailto:Wagner@cs.ucr.eduhttp://www.cs.ucr.edu/~wagnerhttp://www.cs.ucr.edu/cs12&_BCTWagner Truppel