JUI - 5. cviceni

POle

  • klasicky - vytvoreni - make-array,
;;3-rozmerne pole s dim = 2x4x6
(setf pole (make-array '(2 4 6) :initial-element nil ))
 
;;pristup k prvku
(aref pole 0 2 5) ;vypise nil - nic jsme tam nezaradili
 
;;prirazeni
(setf (aref pole 0 2 5) '(1 3) )

struktury

(defstruct Zaznam
   (hodnota (progn (princ "Zadej cislo ")))
   (levy nil)
   pravy
)
 
;;vytvoreni instance
(setf z (make-zaznam)) ; otaze se na jmeno
 
;;prirazeni hodnoty
(setf (zaznam-levy z))

hashovaci tabulka

  • dvojice <klic, hodnota>
  • vyhoda: rychle hledani v tabulce)
;;vytvoreni; make-hash-table
(setf ht (make-hash-table))
 
;;pristup k prvkum: gethash
 
(gethash klic ht) - hashuje podle cehokoliv
;;neexistuje - vraci nil
 
(setf (gethash 'klic ht) 10)
 
;;odstraneni
(remhash 'klic ht)
 
 
;;prochazeni hash tabulkou
maphash funke tabulka - ma 2 parametry: klic, hodnota
 
;;pr. vypsani prvku tabulky
(maphash #'(lambda (k h) 
               (format t "Klic: ~A hodnota: ~A ~%" k h)
            )
          ht
)
;; pomoci hashovaci tabulky spocete cetnost  prvku v seznamu
(defun spocti-cetnosti (seznam)
  (let (ht)
     (setf ht (make-hash-table))
     (mapcar #'(lambda (a)
                   (setf (gethash a ht) (if (gethash a ht) (+ 1 (gethash a ht)) 1))
               ) 
             seznam
     )
     (maphash #'(lambda (k h) 
                  (format t "Prvek ~A ma cetnost ~A ~%" k h)
                )
              ht 
     ) 
  )
)
 
 
;;mame orientovany acyklicky graf reprezentovany seznamem
( (a b c) (b c d) (c d) (d))
;;zjistit, do jakych uzlu vede cesta
jui/cviko5.txt · Last modified: 2011/08/16 22:33 (external edit)
Back to top
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0