====== 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 * 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