KHOA CÄNG NGHÃÛ THÄNG TIN 841 287, 892 992 Âàûc t danh sạc h tuún (Linear List) viãú t tàõt DSTT) DSTT l mäüt dy cọ thãø räùng hồûc cọ hỉỵu hản cạc pháưn tỉí, k hiãûu = Thỉï tỉû cạc pháưn tỉí mäüt DSTT l thỉï tỉû ca cạc vë trê (place) ca chụng, âỉåüc xạc âënh båíi hm Succ Nghéa l våïi mi vë trê p ca mäüt DSTT ≠ φ, ta cọ : ∃ k ≥ cho p = Succk (Head (Trong âọHead () chè vë trê âáưu tiãn ca Mäùi vë trê cọ mäüt näüi dung (content) chênh l pháưn tỉí åí vë trê âọ Säú pháưn tỉí hay säú vë trê ca âỉåüc gi l âäü di (length) ca Nãúu n = 0, thç = φ Màût khạc hm Succ khäng xạc âënh åí vë trê thỉï n hay Succn (Head ()) khäng xạc âënh Âäúi våïi cạc DSTT, ngỉåìi ta xáy dỉûng ba phẹp xỉí l tưn tỉû trãn cạc pháưn tỉí : • Tiãúp cáûn (access) âãún pháưn tỉí thỉï k ca DSTT • Loải b (delete) pháưn tỉí thỉï k ca DSTT • Chn (insert) mäüt pháưn tỉí måïi tải vë trê thỉï k ca DSTT Gi sỉí Element l mäüt kiãøu pháưn tỉí â âỉåüc âënh nghéa trỉåïc âọ Kiãøu trỉìu tỉåüng List âỉåüc âënh nghéa sau : Type List, Place Functions EmptyList : → List Length : List → Int Succ : Place → Place Access : List × Int → Place Content : Place → Element Delete : List × Int → List Insert : List × Int × Element → List Preconditions Pre Access (: List, k : Int) = (1 ≤ k ≤ Length ()) Pre Delete (: List, k : Int) = (1 ≤ k ≤ Length ()) Pre Insert (: List, k : Int, e : Element) = (1 ≤ k ≤ Length () + 1) /* k = Length () tỉång ỉïng våïi viãûc thãm mäüt pháưn tỉí vo cúi DSTT */ Axioms ForAll : List, k : Int, e : Element : Length (EmptyList) = ( ≠ EmptyList) and (1 ≤ k ≤ Length ()) ⇒ Length (Delete (, k)) = Length () (1 ≤ k ≤ Length ()) ⇒ Length (Insert (, k, e)) = Length () + ( ≠ EmptyList) and (1 ≤ k < Length ()) ⇒ Succ (Access (, k)) = Access (, k + 1) ( ≠ EmptyList) and (1 ≤ k ≤ Length ()) and (1 ≤ i ≤ k1) ⇒ Content (Access (Delete (, k), i)) = Content (Access (i) ( ≠ EmptyList) and (1 ≤ k ≤ Length ()) and (k ≤ i ≤ Length () 1) ⇒ Content (Access (Delete (, k), i)) = Content (Access (i 1) (1 ≤ k ≤ Length ()) and (1 ≤ i ≤ k1) ⇒ Content (Access (Insert (, k, e), i)) = Content (Access (i) (1 ≤ k ≤ Length ()1) and (i k) ⇒ Content (Access (Insert (, k, e), i)) = e (1 ≤ k ≤ Length ()1) and (k1 ≤ i ≤ Length ()1) ⇒ Content (Access (Insert (, k, e), i)) = Content (Access (, i 1)) TS Phan Huy Khạnh 08/05/17, 5/8/2017